Requête Linq pour obtenir le dernier enregistrement

Je sais que cela est demandé de nombreuses fois et j'ai cherché la plupart des solutions en ligne, mais rien ne semble le faire pour moi. J'ai une table avec cette structure:

ID | ScheduleId | Filename | Description
 1 |     10     |          |  ....
 2 |     10     | test.txt |  .....

Je veux obtenir le dernier non-vide Filename en passant par le ScheduleId(par exemple, pour obtenir "test.txt" dans ce cas).

J'ai essayé beaucoup de choses et rien ne semble obtenez-moi le nom de fichier. Voici le dernier:

var tempFileName = objContext.SchedulesAndFiles
                           .Where(x => x.ScheduleId == scheduleId)
                           .OrderByDescending(x => x.ScheduleId)
                           .Take(1).Select(x => x.Filename);

Cela ne fonctionne pas aussi bien, même si je comprends pourquoi il n'a pas d':

var tempFileName = from e in objContext.SchedulesAndFiles
                   where e.ScheduleId == scheduleId 
                   orderby e.ScheduleId descending
                   select e.Filename;

Appel .Last() ou .LastOrDefault() déclenche une exception(The query operator 'LastOrDefault' is not supported.)

  • Dans votre premier exemple, vous OrderByDescending sur ScheduleId. Ne pas vous dire ID? Aussi, où voulez-vous de filtre vide FileName dossiers?
  • Vous avez juste à utiliser tempFileName.First puisque vous êtes déjà à l'aide de descending.
  • La première() doit être pris en charge et vous pouvez l'utiliser avec OrderByDescending
  • Vous êtes de la commande par ScheduleId mais votre échantillon contient deux enregistrements avec le même ScheduleId. Alors, évidemment, vous devez inclure une autre colonne que vous souhaitez commander, par exemple l'ID: ... orderby e.ScheduleId descending, ID descending
  • Oui, vous avez raison, j'ai déjà accepté Selman22 réponse, comme il l'a suggéré. Il semble me faire exactement le résultat que j'attends
InformationsquelleAutor Apostrofix | 2014-07-01