Holen Sie sich die "neuesten" datetime " aus einem großen linq-Abfrage, derzeit gibt jeden Datensatz, der eine datetime
Ich habe eine ziemlich lange linq-Abfrage und alles funktioniert wie es sollte.. aber in einem letzten join ich mache einen innerjoin auf eine Tabelle, die über ein log, das log gibt mehr als 50 Datensätze, ich will einfach nur den neuesten Datensatz..
Hier ist ein Beispiel
var tst = from w in context.storage
join p in context.products on w.id equals p.wid
join l in context.logger on p.id equals l.pid
select new
{
storageid = w.id,
productid = p.id
productname = p.name
bought = l.when
};
Also eine kurze Erklärung, was passiert, jedes Produkt gespeichert ist, in ein storage-center und es ist ein Protokoll, Wann das Produkt gekauft wurde, wenn es gekauft wurde, 100 mal, dann gibt es 100 Datensätze im logger.
Also momentan gibt es 50 Einträge für productid = 5 ... warum .. weil es gekauft wurde 50 mal, aber ich will nur 1 Datensatz, daher möchte ich nur das Letzte Datum Zeit aus dem logger.
Kann jemand helfen? Ich bin ein wenig stecken.
- Ist das von LINQ to SQL oder Entity Framework?
- gibt es ein Feld in der db speichert datetime-ist die Aufnahme vorlegen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
result.Distinct(x => x.Prop)
um eindeutige Einträge nurVerwenden
result.Max(x => x.Prop)
zu Holen neuesten Datum, undMin()
zu bekommen frühesten.Dies ist der Fall, wenn Sie einschränken möchten, um die Sammlung von Aufzeichnungen, auf denen zu verbinden, die Sie tun können, durch die Kodierung der join manuell (Art):
Fließend In linq-syntax ist dies eine SelectMany mit einem Ergebnis selector.