代码之家  ›  专栏  ›  技术社区  ›  ADH

使用LINQ在具有多个数据表的数据集中只返回两个特定的数据表

  •  2
  • ADH  · 技术社区  · 8 年前

    myDS.Tables 在 foreach 陈述

    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);
     }
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Sagi    8 年前

    您可以通过使用 Cast IEnumerable 然后使用filter函数 Where 为了得到你的结果。
    if语句应该成为Where函数的谓词。

      var tables = myDS.Tables.Cast<DataTable>()
                              .Where(t=> t.TableName == "MyTable1" || t.TableName == "MyTable2");
    
        2
  •  2
  •   Ermindo Lopes    8 年前

            myDS.Tables
                .OfType<DataTable>()
                .Where(table => new string[] { "MyTable1" , "MyTable2" }.Contains(table.TableName))
                .ToList().ForEach(table =>
                {
    
                    Console.WriteLine();
                    Console.WriteLine("Table Name = " + table.TableName);
                });