【问题标题】:Find DataRow through itemArray value in DataTable c#通过DataTable c#中的itemArray值查找DataRow
【发布时间】:2020-11-28 18:52:08
【问题描述】:

我想根据itemArray 值从DataTable 中获取datarow。数据表dtSchemaGetOleDbSchemaTable() 填充。每行ItemArray 都有 Excel 工作表名称。我正在使用 foreach 循环进行操作。可以用更好的方法来完成吗?

DataTable dtSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
foreach (DataTable item in set.Tables) // set is a DataSet
            {
                int i = dtSchema.Columns["TABLE_NAME"].Ordinal;
                if (item.Rows.Count <= 0)
                {
                    foreach (DataRow row in dtSchema.Rows)
                    {
                        if (row.Field<string>(i) == item.ToString()) // Finding data row
                        {
                            dtSchema.Rows.Remove(row);
                            break;
                        }
                    }
                }
            }

【问题讨论】:

  • 您的代码是否按您预期的方式工作?您可能会做的一件事是,在对行进行 foreach 之前,获取“TABLE_NAME”列的列索引。然后您可以按序数而不是按名称访问数据
  • 代码正在运行。现在我已经更新了查找列序号的代码。检查它@Flydog57

标签: c# linq datatable datarow


【解决方案1】:
 DataTable dtSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            foreach (DataTable item in set.Tables) // set is a DataSet
            {
                if (item.Rows.Count <= 0)
                {
                    var MatchedRows = from s in dtSchema.AsEnumerable()
                                      where s.Field<string>("TABLE_NAME") == item.ToString()
                                      select s;
                    foreach (var item in MatchedRows)
                    {
                        dtSchema.Rows.Remove(item);
                        break;
                    }
                    dtSchema.AcceptChanges();
                }
            }

【讨论】:

  • 我尝试了这段代码并从 foreach 循环中删除了break。 MatchedRows 的 foreach 循环给出错误 Collection 已修改;枚举操作可能不会执行。当它第二次运行时
  • 不要删除中断。这个 for 循环只会运行一次
猜你喜欢
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 2019-05-16
  • 2017-01-30
  • 1970-01-01
  • 2020-09-02
  • 2012-11-25
相关资源
最近更新 更多