簡體   English   中英

使用LINQ可以僅返回具有多個數據表的數據集中的兩個特定數據表

[英]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);
 }

可以通過使用IEnumerableCast函數來使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM