2016-07-11 14 views
0

I 2 Tabellen unten angegeben habe:LinQ die neueste Gruppe von Datensatz erhalten eine Bedingung erfüllt

enter image description here

jetzt will ich die Menge der Child-Tabelle erhalten Objekte für welche auch immer ihre Eltern Tabelleneinträge neuesten sind (wr.rt lastmodified). Es sollte von SelectMany etwas wie ....

List<Child_Table> List = ChildsList.Where(x=>x.name =="pqr" && status == "done") 
    .Select(x=>x.Parent.lastmodified == recent record).....ToList(); 

Antwort

1

Sie können GroupBy am Tag, dann OrderByDescending auf dem Key dann nehmen die First gefolgt sein, die Ergebnisse zu glätten.

var result = ChildsList.Where(x => x.name == "pqr" && x.status == "done") 
    .GroupBy(x => x.Parent.lastmodified) 
    .OrderByDescending(g => g.Key) 
    .First() 
    .SelectMany(g => g) 
    .ToList(); 
+0

Ja es für mich Dank gearbeitet. Aber nur die Änderung ist ... anstelle von SelectMany(), sollten wir Select() verwenden. es hat mein Problem gelöst !! – Nani

+0

@Nani Wenn Sie nicht 'SelectMany' machen, erhalten Sie am Ende eine' List > 'anstelle einer' List ' – juharr

0

könnten Sie ein es verwenden, kommen zu erreichen:

var results = children 
    .Join(parents.OrderByDescending(p => p.lastmodified).Take(1), 
     c => c.parent_id, 
     p => p.id, 
     (c, p) => c) 
    .Where(x => x.name == "pqr" && x.status == "done") 
    .ToList(); 
+0

, die nicht funktioniert. Es gibt keine Liste zurück. – Nani

+0

@Nani Ich weiß nicht warum. Ich habe es mit Ihrem exakten Datensatz getestet und erhalte eine Liste mit dem zurückgegebenen Kind-Datensatz 4. – itsme86

Verwandte Themen