У меня есть два метода, которые выглядят почти одинаковыми, за исключением агрегатной функции, используемой в запросе Linq. Например:Переключение между агрегатными функциями с помощью 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)));
// ...
}
где Item
класс, как это:
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;
}
}
Поскольку оба метода делают то же самое, я хотел бы иметь только один метод, где я прохожу IEnumerable и агрегатную функцию (sum/max) в качестве параметров. Как я могу это достичь?
+1 - Хотя мне понравилось, подпись метода становится слишком трудной для чтения, даже с псевдонимами. – Fernando