您可以在數據表或特定表上的數據集與AsEnumerable的幫助下執行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)));
}
你在訪問什麼? SQL? CLR對象? – Tormod
不,我正在訪問DataTable –
你會說你的目的是通過你當前的代碼來幫助你嗎?我不明白你想要什麼(兩個嵌套'where'') –