Как мы можем заполнить список в объекте с помощью Linq? - PullRequest
0 голосов
/ 26 октября 2011

Класс «PaginatedReport» состоит из двух членов:

int TotalResults;  
IList<Report> Reports; 

Я пытаюсь заполнить экземпляр этого класса с помощью этого запроса:

var reports = (from r in _db.Report
               where r.res_id == status
               group r by r.res_id into g
               select new PaginatedReport
               {
                   TotalResults = g.Count(),
                   Reports = g.OrderBy(x =>x.res_id).Skip(start).Take(nb).ToList()
               });

Как я могу исправить запрос, чтобы избежать следующей ошибки:
Linq для прав доступа не распознает метод «System.Collections.Generic.List 1[DAL.Report] ToList[Report](System.Collections.Generic.IEnumerable 1 [DAL.Report])», и этот метод нельзя преобразовать в хранилище.

1 Ответ

0 голосов
/ 26 октября 2011

Вы должны выполнить последний шаг (Select, возвращающий анонимный тип) локально, вместо того, чтобы поставщик LINQ пытался перевести его (предположительно) в SQL. Что-то вроде:

var reports = from g in (from r in _db.Report
                         where r.res_id == status
                         group r by r.res_id).AsEnumerable()
              select new PaginatedReport {
               TotalResults = g.Count(),
               Reports = g.OrderBy(x =>x.res_id).Skip(start).Take(nb).ToList()
              };

(и вам не нужны скобки вокруг всего выражения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...