[c#] LINQ To Entities ne reconnaît pas la méthode Last. Vraiment?


Answers

Au lieu de Last() , essayez ceci:

model.OrderByDescending(o => o.Id).FirstOrDefault();
Question

Dans cette requête:

public static IEnumerable<IServerOnlineCharacter> GetUpdated()
{
    var context = DataContext.GetDataContext();
    return context.ServerOnlineCharacters
        .OrderBy(p => p.ServerStatus.ServerDateTime)
        .GroupBy(p => p.RawName)
        .Select(p => p.Last());
}

Je devais passer à cela pour que ça marche

public static IEnumerable<IServerOnlineCharacter> GetUpdated()
{
    var context = DataContext.GetDataContext();
    return context.ServerOnlineCharacters
        .OrderByDescending(p => p.ServerStatus.ServerDateTime)
        .GroupBy(p => p.RawName)
        .Select(p => p.FirstOrDefault());
}

Je ne pouvais même pas utiliser p.First() , pour refléter la première requête.

Pourquoi y a-t-il des limites aussi fondamentales dans un système ORM aussi robuste?




Encore une autre façon d'obtenir le dernier élément sans OrderByDescending et charger toutes les entités:

dbSet
    .Where(f => f.Id == dbSet.Max(f2 => f2.Id))
    .FirstOrDefault();



Links