Reputation: 141
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
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