[英]Using LINQ to return just two specific DataTables in a DataSet with several DataTables
如何使用LINQ在具有多個數據表的數據集中僅返回兩個特定的數據表? 例如,在下面的代碼片段中,是否可以在foreach
語句中將LINQ添加到myDS.Tables
中?
如果可能,我想刪除if
語句。
DataTable myTable1 = new DataTable("MyTable1");
DataTable myTable2 = new DataTable("MyTable2");
DataTable myTable3 = new DataTable("MyTable3");
DataSet myDS = new DataSet();
myDS.Tables.Add(myTable1);
myDS.Tables.Add(myTable2);
myDS.Tables.Add(myTable3);
foreach (DataTable table in myDS.Tables)
{
if (table.TableName != "MyTable1" && table.TableName != "MyTable2")
{
continue;
}
Console.WriteLine();
Console.WriteLine("Table Name = " + table.TableName);
}
可以通過使用IEnumerable
的Cast
函數來使用linq,然后使用filter函數Where
來獲得結果。
您的if語句應成為Where函數的謂詞。
var tables = myDS.Tables.Cast<DataTable>()
.Where(t=> t.TableName == "MyTable1" || t.TableName == "MyTable2");
代替foreach塊,您可以使用:
myDS.Tables
.OfType<DataTable>()
.Where(table => new string[] { "MyTable1" , "MyTable2" }.Contains(table.TableName))
.ToList().ForEach(table =>
{
Console.WriteLine();
Console.WriteLine("Table Name = " + table.TableName);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.