linq to datatable 和lambda查询datatable

时间:2023-03-09 14:39:34
linq to datatable 和lambda查询datatable

用Linq查询DataTable

        static DataTable table = new DataTable();
static DataColumn dc = new DataColumn();
static void Main()
{
Createtable();
table.Rows.Add(, ,"2010-1-1");
table.Rows.Add(, , "2010-1-1");
table.Rows.Add(, , "2010-1-1");
table.Rows.Add(, , "2010-1-1");
table.Rows.Add(, , "2010-1-2");
table.Rows.Add(, , "2010-1-2");
table.Rows.Add(, , "2010-1-2");
table.Rows.Add(, , "2010-1-2"); var query = from dt in table.AsEnumerable()
where new int[] { , , }.Contains(dt.Field<Int32>("PID"))
orderby dt.Field<DateTime>("CreateDate") descending
group dt by dt.Field<Int32>("PID") into g
let n = (from d in g.Take().Skip() select d).FirstOrDefault()
select new
{
ID = n.Field<Int32>("ID"),
PID = g.Key,
CreateDate = n.Field<DateTime>("CreateDate")
};
query.ToList().ForEach(m => Console.WriteLine("{0}\t{1}\t{2}\t",m.ID,m.PID,m.CreateDate));
}
public static void Createtable()
{
dc = new DataColumn("ID", Type.GetType("System.Int32"));
table.Columns.Add(dc);
dc = new DataColumn("PID", Type.GetType("System.Int32"));
table.Columns.Add(dc);
dc = new DataColumn("CreateDate", Type.GetType("System.DateTime"));
table.Columns.Add(dc);
}

用Lambda表达式查询DataTable

DataTable dt = new DataTable();
DataColumn dc = new DataColumn("UserName", System.Type.GetType("System.String"));
DataColumn dc1 = new DataColumn("UserPwd", System.Type.GetType("System.String"));
dt.Columns.Add(dc);
dt.Columns.Add(dc1);
DataRow dr = dt.NewRow();
dr["UserName"] = "";
dr["UserPwd"] = "";
dt.Rows.Add(dr); var rownumber = dt.AsEnumerable().Where<DataRow>(C=>C["UserName"].ToString()=="");
int row = rownumber.Count<DataRow>();
foreach ( DataRow en in rownumber)
{ Response.Write("User" + en["UserName"] + "pwd" + en["UserPwd"]);
}