using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Reflection;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataTable dtTest = new DataTable();
dtTest.Columns.Add("Title", typeof(string));
DataRow dr = dtTest.NewRow();
dr["Title"] = "AAA";
dtTest.Rows.Add(dr);
DataRow dr1 = dtTest.NewRow();
dr1["Title"] = "BBB";
dtTest.Rows.Add(dr1);
DataRow dr2 = dtTest.NewRow();
dr2["Title"] = "CCC";
dtTest.Rows.Add(dr2);
var query = from m in dtTest.AsEnumerable()
group m by m["Title"] into g
select new { Title = g.Key, Count = g.Count() };
DataTable dt = LinqtoDataTablequery();
GridView1.DataSource = dt;
GridView1.DataBind();
}
public DataTable LinqtoDataTable
{
DataTable dtReturn = new DataTable();
// column names
PropertyInfo[] oProps = null;
if (varlist == null) return dtReturn;
foreach (T rec in varlist)
{
// Use reflection to get property names, to create table, Only first time, others will follow
if (oProps == null)
{
oProps = ((Type)rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType;
if ((colType.IsGenericType)(colType.GetGenericTypeDefinition()== typeof(Nullable)))
{
colType = colType.GetGenericArguments()[0];
}
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
}
DataRow dr = dtReturn.NewRow();
foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
}
dtReturn.Rows.Add(dr);
}
return dtReturn;
}
}
}