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

18,361

Solution 1

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?

Solution 2

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

mds.Skip(i).First()
Share:
18,361
Luca Romagnoli
Author by

Luca Romagnoli

Updated on June 03, 2022

Comments

  • Luca Romagnoli
    Luca Romagnoli almost 2 years

    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?