我有兩種方法看起來幾乎相同,除了在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和聚合函數(總和/最大)作爲參數。我怎樣才能做到這一點?
+1 - 雖然我喜歡,但方法簽名變得太難閱讀,即使有別名。 – Fernando 2010-08-18 11:57:58