The following code shows how to obtain a reference to a specific Web, then to a specific list, and then how to enumerate the fields in the list:

SPSite thisSite = SPContext.Current.Site;
using (SPWeb targetWeb = thisSite.AllWebs["Project Management"])
{
  SPList targetList = targetWeb.Lists["Announcements"];
  foreach (SPField fld in targetList.Fields)
  {
    if(!fld.Hidden)
    {
      LiteralControl output = new LiteralControl(fld.InternalName + "<br/>");
      this.Controls.Add(output);
    }
  }
}

 

The following code shows how to manipulate the field values for a list.
Note: The commented lines show alternative ways to reference a specific field in a list item.

SPSite thisSite = SPContext.Current.Site;
using (SPWeb targetWeb = thisSite.AllWebs["Project Management"])
{
  SPList targetList = targetWeb.Lists["Announcements"];
  SPListItemCollection allItems = targetList.Items;
  //The following all show ways of accessing an individual list item
  //allItems[0][0] = "<Some New Value>";
  //allItems[0]["Title"] = "<New Title>";
  //allItems[<Known GUID>]["Title"] = "<New Title>";
  targetWeb.AllowUnsafeUpdates = true;
  SPListItem newItem = allItems.Add();
  newItem.Update();
  Guid itemGuid = newItem.UniqueId; //Could be used later to ensure we can access this item
  newItem["Title"] = "SharePoint Conference is a HUGE success!";
  newItem["Body"] = "The much awaited for sneak peek of SharePoint 2010 was unveiled...";
  newItem.Update();
  targetWeb.AllowUnsafeUpdates = false;
}

 

The following code shows how to add two buttons to a Web Part that update list items. One button updates all items in a list, while the other button updates only those items returned by an efficient CAML query:

protected override void CreateChildControls()
{
  Button updateAllProducts = new Button();
  updateAllProducts.Text = "Apply 10% Discount";
  updateAllProducts.Click += new EventHandler (updateAllProducts_Click);
  updateAllProducts.Style.Add("Cursor", "Hand");
  this.Controls.Add(updateAllProducts);
  Button updateWingTipProducts = new Button();
  updateWingTipProducts.Text = "Increase WingTip Prices";
  updateWingTipProducts.Click += new EventHandler (updateWingTipProducts_Click);
  updateWingTipProducts.Style.Add("Cursor", "Hand");
  this.Controls.Add(updateWingTipProducts);
}
void updateAllProducts_Click(object sender, EventArgs e)
{
  SPWeb thisWeb = SPContext.Current.Web;
  SPList productList = thisWeb.Lists["Products"];
  foreach (SPItem product in productList.Items)
  {
    double currentPrice = double.Parse(product["SellingPrice"].ToString());
    currentPrice = (currentPrice*0.9);
    product["SellingPrice"] = currentPrice;
    product.Update();
  }
  this.Page.Response.Redirect(productList.DefaultViewUrl);
}
void updateWingTipProducts_Click(object sender, EventArgs e)
{
  SPWeb thisWeb = SPContext.Current.Web;
  SPList productList = thisWeb.Lists["Products"];
  SPQuery wingTipsQuery = new SPQuery(productList.DefaultView);
  wingTipsQuery.ViewFields = "<FieldRef Name='SellingPrice' />";
  wingTipsQuery.Query =
    "<Where><Contains><FieldRef Name='Manufacturer' /><Value Type='Text'>WingTips</Value></Contains></Where>";
  foreach (SPItem product in productList.GetItems(wingTipsQuery))
  {
    double currentPrice = double.Parse(product["SellingPrice"].ToString ());
    currentPrice = (currentPrice * 1.2);
    product["SellingPrice"] = currentPrice;
    product.Update();
  }
  this.Page.Response.Redirect(productList.DefaultViewURL);
}

 

The following code sample shows how to use Linq to SharePoint to access list items and display them in a table in a Web Part.
Note: This code relies on an entities class having been created by using SPMetal, and that entities class having been added to the Visual Studio project.

Table productsTable;
protected override void CreateChildControls()
{
  Button linqToProducts = new Button();
  linqToProducts.Text = "Run LINQ Query";
  linqToProducts.Click += new EventHandler (linqToProducts_Click);
  linqToProducts.Style.Add("Cursor", "Hand");
  this.Controls.Add(linqToProducts);
  productsTable = new Table();
  this.Controls.Add(productsTable);
}
void linqToProducts_Click(object sender, EventArgs e)
{
  ContosoEntitiesDataContext cdc = new ContosoEntitiesDataContext(http://intranet.contoso.com);
  var products = from productList in cdc.Products
    orderby productList.Manufacturer
    select new { productList.Title, productList.SellingPrice, productList.Manufacturer };
  foreach (var bikeProduct in products)
  {
    TableRow row = new TableRow();
    TableCell productName = new TableCell();
    productName.Text = bikeProduct.Title;
    TableCell productManf = new TableCell();
    productManf.Text = bikeProduct.Manufacturer;
    TableCell productPrice = new TableCell();
    productPrice.Text = bikeProduct.SellingPrice.ToString();
    row.Cells.Add(productName);
    row.Cells.Add(productManf);
    row.Cells.Add (productPrice);
    productsTable.Rows.Add(row);
  }
}

 

The following code shows how to achieve content type manupulation that is not possible by using the browser user interface. Essentially, the code adds specific content types to folders in a document library when those folders are created with specific names of 'Quotes' and 'POs'.

public override void ItemAdded(SPItemEventProperties properties)
{
  base.ItemAdded(properties);
  SPListItem added = properties.ListItem;
  SPContentType fld = added.ParentList.ContentTypes["Folder"];
  SPContentType po = added.ParentList.ContentTypes["PO"];
  SPContentType quote = added.ParentList.ContentTypes["Quote"];
  if (added.ContentType.Id == fld.Id)
  { 
    SPFolder addedFolder = added.Folder;
    IList<SPContentType> currentContentTypes = addedFolder.ContentTypeOrder;
    List<SPContentType> cts = new List<SPContentType>();
    if (added.Title == "POs")
    {
      cts.Add(po);
      addedFolder.UniqueContentTypeOrder = cts;
      addedFolder.Update();
    }
    if (added.Title == "Quotes")
    {
      cts.Add(quote);
      addedFolder.UniqueContentTypeOrder = cts;
      addedFolder.Update();
    }
  }
}