I have developed a custom web part which reads data from SharePoint List named "Projects" and display in a GridView control. Find below the code of the custom web part:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using Microsoft.SharePoint; 
using Microsoft.SharePoint.WebControls; 
using System.Data; 

namespace ReadListDataWebPart {   public class CustomListDataWebPart : WebPart   {     protected override void CreateChildControls()     {       SPWeb web = SPControl.GetContextWeb(Context);       GridView gview = new GridView();DataTable dt = new DataTable();       DataRow dr;       DataColumn dc;
      foreach (SPList list in web.Lists)       {         if (list.Title == "Projects")         {           if (list.ItemCount > 0)           {             dc = new DataColumn("Project",Type.GetType("System.String"));             dt.Columns.Add(dc);
            dc = new DataColumn("Client", Type.GetType("System.String"));             dt.Columns.Add(dc);
            foreach (SPListItem item in list.Items)             {               dr = dt.NewRow();               dr["Project"] = item["Project"];dr["Client"] = item["Client"];               dt.Rows.Add(dr);             }           }           gview.DataSource = dt;           gview.DataBind();         }       }       Controls.Add(gview);     }   } }