【问题标题】:How to foreach through a list of datatables?如何遍历数据表列表?
【发布时间】:2019-07-22 12:15:18
【问题描述】:

我有 2 个数据表的列表。我想遍历它们中的每一个,一次一个。我该怎么做呢?遍历数据表列表的示例有 0 个。

List<DataTable> test = new List<DataTable>();

foreach (DataRow dataRow in TEST.LIST)
{
    string value = dataRow.Field<string>("Slave_IO_Running");   //Looks for "Slave_IO_Running" status.

    if (value == "Yes")
    {
        results.Add(siteName + ": WORKING"); //adds working to the visual table 
    }
    else
    {
        results.Add(siteName + ": REPLICATION ERROR"); //adds not working to the result list
    }
    break;
}

【问题讨论】:

  • 你需要 2 个 for 循环:foreach (var testDataTable in test) { foreach (DataRow dataRow in testDataTable) {
  • foreach (var table in test) ?你会像遍历任何集合一样遍历它。在该循环中,您将拥有一个 DataTable,并且可以像任何其他集合一样遍历其行。
  • 但是你已经写了一个foreach.. 将它扩展到一个稍微不同的列表肯定不是很大的飞跃?
  • 您的最后 5 个问题似乎只是一遍又一遍地问同样的问题,代码略有不同....

标签: c# datatable


【解决方案1】:

对于每个数据表,您可以使用DataTable.Rows,对于每一行,您可以使用row["columnName"] 访问属性或遍历相应行中的每一列 喜欢

 foreach(DataTable table in tables)
 {
   foreach(DataRow row in table.Rows)
   {
     foreach(DataColumn column in table.Columns)
     {
        Console.WriteLine(row[column]);
     }
   }
 }

【讨论】:

    【解决方案2】:

    你可以这样尝试,假设两个表包含相同的列:

    foreach (DataRow dataRow in test.SelectMany(dt => dt.Rows.OfType<DataRow>()))
    {
        // your code using the rows
    }
    

    【讨论】:

    • 这甚至无法编译。
    • RowsDataRowCollection,而不是 IEnumberable&lt;DataRow&gt;。将dt.Rows 替换为dt.Rows.OfType&lt;DataRow&gt;()
    • 现在你已经修复了你的代码,你应该解释一下。
    猜你喜欢
    • 2020-09-11
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2013-01-26
    • 2012-08-15
    • 2021-07-16
    相关资源
    最近更新 更多