12. november 2011 - 22:38Der er
10 kommentarer og 1 løsning
Group By i LINQ
Jeg har en liste af entiteter (List<MinEntitet>). Jeg har fx. 20 elementer i denne liste.
Lad os sige at det er en liste af personer. public class Person { public string Country {get;set;} public string City {get;set;} public string FirstName {get;set;} public string LastName {get;set;} public int Age {get;set;} }
Jeg vil gerne gruppere alle dem, der kommer fra samme land og kommer fra samme by. Jeg vil sætte dem ind i en List<Subscriber> klasse, hvor jeg samtidig fanger den laveste alder og den højeste alder.
public class Subscriber { public string Country {get;set;} public string City {get;set;} public int MinAge {get;set;} public int MaxAge {get;set;} }
Jeg har problemer med at lave en groupby med to betingelser, dvs. Country og City. Jeg kan sagtens lave den med een betingelse uden problemer, men der skal grupperes på Country og City og som en krølle på det hele, så skal den laveste alder og den højeste alder findes i grupperet data og sættes i Subscriber sammen med Country og City....
var subscribers = from p in Person group p by new {p.Country, p.City} into s select new Subscriber() { Country = s.Key.Country, City = s.Key.City, MaxAge = s.Max(x => x.Age) MinAge = s.Min(x => x.Min) };
Er det egentligt nemt at neste en if else i linq udtrykket? jeg har fx en lille betingelse at jeg skal spørge på et fx. et FirstName == 'Clark' og hvis det er, så skal maxAge være = 99
Abstraher for logikken i det...det er bare et eksempel på en betingelse...
Kender godt operatoren....havde slet ikke tænkt at den kunne bruges i dette tilfælde :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.