LINQ mir Group und Max Wert ermitteln

21/01/2009 - 18:35 von Stephan | Report spam
Hallo zusammen,
ich bin noch ein Linq Anfànger und habe folgendes Problem:

Ich habe eine Liste mit 365 (1xJahr) Eintràgen:

IList<ConsumptionDataEntryEntity> consumptionDataEntryEntityList

wobei ConsumptionDataEntryEntity:


public class ConsumptionDataEntryEntity : BaseEntity<int> {
public virtual int Id{ get; set; }
public virtual DateTime? TimeField { get; set; }
public virtual float ValueField { get; set; }
}


Jetzt versuche ich per Linq für jeden Monat das ConsumptionDataEntryEntity
Object herauszuholen, bei denen ValueField maximal ist:

var monthList from n in consumptionDataEntryEntityList
group n by ((DateTime)n.TimeField).Date.Month
into g
select new ConsumptionDataEntryEntity {
Id = ??????

TimeField = ?????????????????


ValueField = g.Max(y => y.ValueField)
};


über g.Max bekomme ich von jedem Monat den Maximalwert, wie schaffe ich es
aber die
dazugehörige Id und das TimeField zu ermitteln ?

Vielen Dank
Stephan
 

Lesen sie die antworten

#1 Martin Honnen
21/01/2009 - 19:35 | Warnen spam
Stephan wrote:

Jetzt versuche ich per Linq für jeden Monat das ConsumptionDataEntryEntity
Object herauszuholen, bei denen ValueField maximal ist:

var monthList > from n in consumptionDataEntryEntityList
group n by ((DateTime)n.TimeField).Date.Month
into g



let max = g.Max(e => e.ValueField)

select new ConsumptionDataEntryEntity {



Id = g.First(e => e.ValueField == max).Id,



TimeField = g.First(e => e.ValueField ==
max).TimeField,



ValueField = g.Max(y => y.ValueField)



ValueField = max

};


über g.Max bekomme ich von jedem Monat den Maximalwert, wie schaffe ich es
aber die
dazugehörige Id und das TimeField zu ermitteln ?



Siehe oben inline, wenn ich das richtig verstanden habe, willst du
gruppieren, aus jeder Gruppe das Maximum bestimmen und dann Id und
TimeField vom dem Element nehmen, das in der Gruppe das Maximum hat.




Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen