Muhammad Rizwan
Muhammad Rizwan

Reputation: 141

Find DataRow through itemArray value in DataTable c#

I want to get datarow from the DataTable based upon the itemArray value. DataTable dtSchema is filled by GetOleDbSchemaTable(). Every row ItemArray has Excel Sheet Name. I am doing it with foreach loop. Can it be done with some better way?

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

Upvotes: 0

Views: 809

Answers (1)

Irfan Shaikh
Irfan Shaikh

Reputation: 54

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

Upvotes: 1

Related Questions