LINQ / Projection - Дерево выражений может не содержать динамическую операцию? - PullRequest
0 голосов
/ 11 декабря 2011

В приведенном ниже коде выдается следующая ошибка:

«Дерево выражений может не содержать динамическую операцию»

var x = db.Data.Select(x => new { name = TitleHT[x.TitleId], x.TitleId }).GroupBy(x => x.name);

TitleHT является Dictionary<int, string>, так что я могу посмотреть строковое представление TitleId.Поэтому я пытаюсь присвоить имя этому строковому литералу в запросе.TitleId имеет тип int?не уверен, имеет ли это значение.

1 Ответ

5 голосов
/ 11 декабря 2011

Вы пометили свой вопрос как "linq-to-sql", поэтому я предполагаю, что БД является L2S DataContext.В этом случае поставщик LINQ пытается преобразовать TitleHT [x.TitleId] в оператор SQL, но не может.Примерно так должно работать:

var x = db.Data
    .Select(x => x.TitleId)
    .ToList() // Subsequent projection using LINQ-to-Objects
    .Select(x => new { name = TitleHT[x], TitleId = x })
    .GroupBy(x => x.name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...