Ich habe eine Liste von Elementen im Zusammenhang mit Benutzern.Bestellte Gruppe letzten Artikel
Jeder Artikel hat ein Datum.
Ich möchte das letzte Element erhalten (nach Datum) jedes Nutzers
Zum Beispiel, wenn Daten:
Id1, User1, 1.1.16
Id2, User2, 2.1.16
Id1, User1, 4.1.16
Id4, User2, 3.1.16
Id3, User1, 2.1.16
Id4, User2, 5.1.16
Es sollte das letzte Element zurückkehrt (nach Datum) von jedem des Benutzers :
Id1 User1 4.1.16
Id4 User2 5.1.16
Meine Frage ist:
from sf in db.Items
where ...
group i by i.UserId into g
select g.OrderByDescending(s => s.StartDate).FirstOrDefault();
Aus irgendeinem Grund wird es immer das erste Element des Benutzers.
Wenn ich alle Gruppen und ihre Artikel drucke, sieht es OK aus und das erste Element
ist das letzte in jeder Gruppe, aber die Abfrage gibt es nicht zurück.
Ich habe versucht, g.OrderBy
zu ändern ..didn't zu helfen
auch g.ToList()
hinzuzufügen versucht ...
Wie kann ich die neuesten Artikel von jedem Nutzer bekommen?
Es funktioniert, wenn im die Abfrage
... Gruppe i von i.UserId in g
wählen g.OrderByDescending (s => s.StartDate)
und als zu ändern, wenn Ich Schleife auf Gruppen Ich nehme erste Artikel
foreach (var g in Abfrage)
{
var last = g.First();
Leider bekomme ich das gleiche wieder. Es funktioniert nur, wenn ich die gesamte Gruppe auswähle und wenn ich Gruppen wiederhole, wähle ich zuerst. foreach (var gr in resultQuesry) var last = gr.First(); –