Sitter med en grej och funderar på det snyggaste sättet att lösa det i LINQ (VB.NET =/) I C# hade jag gjort så härLINQ, välj högsta elementen
Låt säga att vi har en lista med priser. Price: (Origin, Destination, Supplier, Price)
Nu vill jag ha ut det billigaste för varje origin/destination-kombination. En mycket enkel lösning är något i stil med:
LowestPrices = From p in Prices Group By p.Origin, p.Destination Into Origin, Destination, Min(Function(p) p.Price)
LowestPriceItems = From p In Prices Join x in LowestPrices On origin, destination, price select p
Men det känns dels jävligt b, och funkar dessutom bara om det lägsta priset är unikt. (I så fall spelar det ingen roll vilken av dem man tar.)
En annan variant är
LowestPriceItems = From p in Prices Group By p.Origin, p.Destination Into g= Group
Select item = (From p in g Order By p.Price).First)
Men det känns också jävligt överdrivet. Är det någon som har en bra ide?Sv: LINQ, välj högsta elementen
prices.OrderBy(x => x.Price).GroupBy(x => new { x.Origin, x.Destination }).Select(x => x.First())