J'ai deux méthodes qui semblent presque identiques, à l'exception de la fonction d'agrégat utilisée dans la requête Linq. Par exemple:basculer entre les fonctions d'agrégat avec linq
public IEnumerable<Item> DoStuff(IEnumerable<Item> someItems) {
var items = someItems.GroupBy(i => i.Date).Select(p => new Item(p.Key, p.Sum(r => r.Value)));
// ...
}
public IEnumerable<Item> DoOtherStuff(IEnumerable<Item> someItems) {
var items = someItems.GroupBy(i => i.Date).Select(p => new Item(p.Key, p.Max(r => r.Value)));
// ...
}
où le Item
est une classe comme ceci:
public class Item {
public DateTime Date { get; private set; }
public decimal Value { get; private set; }
public Item(DateTime date, decimal value) {
Date = date;
Value = value;
}
}
Comme les deux méthodes font la même chose, je voudrais avoir juste une méthode où je passe le IEnumerable et la fonction d'agrégation (somme/max) en tant que paramètres. Comment puis-je y parvenir?
+1 - Bien que j'aie aimé, la signature de méthode devient trop difficile à lire, même avec les alias. – Fernando