Динамический Linq - нет свойства или поля в типе «datarow» - PullRequest
0 голосов
/ 13 апреля 2011

Я использую Таблицу клиентов Northwind, где заполняю набор данных и получаю данные.

Я пытаюсь использовать динамический linq и хочу динамически выбирать columnName

var qry = MyDataTable.AsEnumerable().AsQueryable().Select("new(Country)");

Сейчас у меня жестко закодированная страна, но даже тогда я получаю эту ошибку

No property or field 'Country' exists in type 'datarow'

Я хотел бы в конечном итоге изменить этот запрос, чтобы динамически принимать имя столбца.

Пожалуйста, помогите !!! спасибо.

1 Ответ

4 голосов
/ 13 апреля 2011

Важный совет здесь (выделен жирным шрифтом):

Нет свойства или поля 'Страна' в тип 'datarow'

Метод расширения AsEnumerable класса DataTable возвращает IEnumerable<T>, где T имеет тип DataRow.Теперь метод Select Dynamic LINQ хочет работать с этим типом DataRow, который, конечно, не имеет свойства Country.

Вы можетепопробуйте это вместо:

var qry = MyDataTable.AsEnumerable().AsQueryable()
    .Select("new(it[\"Country\"] as CountryAlias)");

it теперь представляет переменную типа DataRow, и вы можете использовать методы этого типа и, возможно, также индексатор в моем примере выше.(Dynamic LINQ поддерживает доступ к элементам массива по целочисленному индексу, но я не уверен, будет ли работать доступ к индексатору со строковым ключом.)

...