Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ to Entities does not recognize the method ElementAt(i);

I'm using the method elementat(Int32) to get a specific element of a query's result.

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

destinazioneRow = mds.ElementAt(i);

LINQ to Entities does not recognize the method 'TimeEntModel.TDP_MissioniDestinazioni ElementAt[TDP_MissioniDestinazioni]
(System.Linq.IQueryable`1[TimeEntModel.TDP_MissioniDestinazioni], Int32)' method, and this method cannot be translated into a store expression.

Why am I getting this error and how can I fix it?

like image 353
Luca Romagnoli Avatar asked Feb 26 '10 14:02

Luca Romagnoli


2 Answers

Are you happy to fetch all the "earlier" results? If so, either call ToList() to cache them, or AsEnumerable() to fetch them on each call, with the AsEnumerable just being a way to force the compiler to call Enumerable.ElementAt instead of Queryable.ElementAt.

There may be a better way (e.g. using Take or Skip) though - could you give more information about the bigger picture?

like image 159
Jon Skeet Avatar answered Sep 22 '22 00:09

Jon Skeet


You can simply mix Skip and First to do the trick:

mds.Skip(i).First()
like image 22
Steven Avatar answered Sep 21 '22 00:09

Steven