我有两种方法看起来几乎相同,除了在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