LINQ to Entities не распознает метод ElementAt (i); - PullRequest
15 голосов
/ 26 февраля 2010

Я использую метод elementat(Int32), чтобы получить определенный элемент результата запроса.

var mds = db.TDP_MissioniDestinazioni.Where(p => p.MissioneID == missioneRow.MissioneID);  

destinazioneRow = mds.ElementAt(i);

LINQ to Entities не распознает метод «TimeEntModel.TDP_MissioniDestinazioni ElementAt [TDP_MissioniDestinazioni]
(System.Linq.IQueryable`1 [TimeEntModel.TDP_MissioniDestinazioni], Int32) ', и этот метод не может быть переведен в магазин выражение.

Почему я получаю эту ошибку и как ее исправить?

Ответы [ 2 ]

22 голосов
/ 26 февраля 2010

Вы счастливы получить все "более ранние" результаты? Если это так, либо вызовите ToList() для их кэширования, либо AsEnumerable() для их выборки при каждом вызове, при этом AsEnumerable является просто способом заставить компилятор вызвать Enumerable.ElementAt вместо Queryable.ElementAt.

Может быть, есть лучший способ (например, использовать Take или Skip) - не могли бы вы дать больше информации о более широкой картине?

21 голосов
/ 26 февраля 2010

Вы можете просто смешать Skip и First, чтобы добиться цели:

mds.Skip(i).First()
...