Mathi2code Ответов: 1

Как преобразовать запрос Linq в DataTable C#


Когда я пытаюсь преобразовать Linq в таблицу данных, используя приведенный ниже код, я получаю и исключение. Пожалуйста, помогите мне решить эту проблему. Подробности приведены ниже:

Код:
DataTable boundTable = new DataTable();

IEnumerable<DataRow> results1 = (IEnumerable<DataRow>) (
  from rowDict in dsEstimatesParam.Tables[strTableName].AsEnumerable()
  join rowMaster in dsAttributes.Tables[strTableName1].AsEnumerable()
    on rowDict["ID"] equals rowMaster["ID"]
  join rowAttDep in dsParam.Tables["Dependencies"].AsEnumerable()
    on rowMaster["ID"] equals rowAttDep["ID"]
  where Convert.ToString(rowAttDep["Name"]) == strColumn
  select rowDict[strColumn] == DBNull.Value ? 0 : Convert.ToDecimal(rowDict[strColumn]));

boundTable = results1.CopyToDataTable<DataRow>();

Исключение:
Unable to cast object of type 'WhereSelectEnumerableIterator`2[<>f__AnonymousType5`2[<>f__AnonymousType1`2[System.Data.DataRow,System.Data.DataRow],System.Data.DataRow],System.Decimal]' to type 'System.Collections.Generic.IEnumerable`1[System.Data.DataRow]'

Спасибо и с уважением,
Мати.

Tomas Takac

Вы выбираете десятичную дробь, а не DataRow.

1 Ответов

Рейтинг:
12

DamithSL

например, вам нужно выбрать строку данных в запросе linq

IEnumerable<datarow> query =
  from rowDict in dsEstimatesParam.Tables[strTableName].AsEnumerable()
  join rowMaster in dsAttributes.Tables[strTableName1].AsEnumerable()
    on rowDict["ID"] equals rowMaster["ID"]
  join rowAttDep in dsParam.Tables["Dependencies"].AsEnumerable()
    on rowMaster["ID"] equals rowAttDep["ID"]
  where Convert.ToString(rowAttDep["Name"]) == strColumn
  select rowDict;
DataTable boundTable = query.CopyToDataTable<datarow>();</datarow></datarow>