2016-03-20 17 views
0

ich LINQ bin neu und kämpfen Aufzeichnungen zu bekommen mit den neuesten publishing_DateMaximum Datum der Aufzeichnung mit LINQ

Die Tabelle hat Settlement_date, Settlement_Period, Publishing_Date und Indicated_Value

Die Tabelle als mehrere Datensätze für die gleich settlement_date und Settlement_Period für verschiedene publishing_date ‚s

die Daten ich bin nachdem es settlement_date, Settlement_Period, Indicated_Value für die neuesten publishing_date in jeder Periode

Settlement_period zwischen 1 und 48

+2

Können Sie zeigen, was Sie bisher versucht haben? Haben Sie ein Minimum Beispiel, das Leute verwenden können, um Ihr Problem zu reproduzieren? – Martin

+0

Sorry verpasste, dass ich VB.net verwende – NigeH

+0

Ich kann das maximale Datum mit der Gruppe nach Code erhalten, kann aber nicht den Wert erhalten dim Query1 = von Q in sys_indDEMs wo Q.settlement_date = "2016-03-20" _ Sortieren nach Q.Settlement_Period Gruppe Q nach Q.Settlement_Periode in g = Gruppe Wählen Sie Settlement_Period, MaxDate = g.Max (Funktion (Q) Q.Publishing_Date) Ordnung von Settlement_period – NigeH

Antwort

0

Zuerst Sie tatsächlich den neuesten Erscheinungstermin erhalten müssen:

var latestPublishingDate = collection.Max(x => x.Publishing_Date); 

Dann, gerade diesem Erscheinungstermin alle Datensätze mit zu bekommen:

var result = collection.Where(x => x.Publishing_Date == latestPublishingDate); 

Während es verlockend sein könnte, die Anrufe zu verschachteln, würde das neu berechnet werden das Maximum für jeden Datensatz.

0

Alles, was Sie tun müssen, ist die Gruppierung von Daten mit GroupBy Klausel.

Dim result = dataContext _ 
    .GroupBy(Function(x) New With {.SD = settlement_date, .SP = Settlement_Period}) _ 
    .Select(Function(grp) New With{ _ 
     .SettltementDate = grp.SD, _ 
     .SettlementPeriod = grp.SP, _ 
     .MaxPublishingDate = grp.Max(Function(d) d.publishing_date)}) 

Schließlich würde ich vorschlagen, dies zu lesen:
LINQ - Sample Queries (101 samples)
LINQ 101 Samples - Lambda Style