您可以在 AsEnumerable 的帮助下对 DataTable 或 DataSet 上的特定表执行 LINQ 查询。
这是示例,这可能会有所帮助。
DataSet ds = new DataSet();
DataTable dt = new DataTable();
DataColumn dc;
DataRow dr;
ds.DataSetName = "products";
dt.TableName = "product";
dc = new DataColumn("product_id",long.MaxValue.GetType());
dt.Columns.Add(dc);
dc = new DataColumn("product_name");
dt.Columns.Add(dc);
dr = dt.NewRow();
dr["product_id"] = 1;
dr["product_name"] = "Monitor";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["product_id"] = 2;
dr["product_name"] = "Mouse";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["product_id"] = 3;
dr["product_name"] = "KeyBoard";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["product_id"] = 4;
dr["product_name"] = "LCD";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
IEnumerable<DataRow> objResult1 = from tbl in dt.AsEnumerable()
where tbl.Field<long>(0) <= 2
select tbl;
Response.Write("<b>Query Results 1</b>");
foreach (DataRow row in objResult1)
{
Response.Write(string.Format("<br/>Product ID: {0} , Product Name: {1}", row.Field<long>(0), row.Field<string>(1)));
}
IEnumerable<DataRow> objResult2 = from tbl in ds.Tables[0].AsEnumerable()
let product_name = tbl.Field<string>(1)
where product_name.StartsWith("Key")
|| product_name.StartsWith("Mo")
select tbl;
Response.Write("<br/><br/><b>Query Results 2</b>");
foreach (DataRow row in objResult2)
{
Response.Write(string.Format("<br/>Product ID: {0} , Product Name: {1}", row.Field<long>(0), row.Field<string>(1)));
}