首页 > 解决方案 > 在DataTable c#中通过itemArray值查找DataRow

问题描述

我想datarow根据itemArray值从 DataTable 中获取。数据表dtSchema由 填充GetOleDbSchemaTable()。每行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;
                        }
                    }
                }
            }

标签: c#linqdatatabledatarow

解决方案


 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();
                }
            }

推荐阅读