我有一组同一类型的对象,我想将其转换为另一种类型。这可以使用foreach轻松完成,但我想弄清楚如何使用Linq的聚合函数来完成它。
问题在于所有的Aggregate示例都使用像字符串或整数这样支持'+'运算符的类型。我想让累加器类型成为一个列表,但列表不支持'+'语义。
以下是一个快速示例:
public class DestinationType
{
public DestinationType(int A, int B, int C) { ... }
}
var set = from item in context.Items
select new { item.A, item.B, item.C };
var newSet = set.Aggregate( new List<DestinationType>(),
(list, item) => list.Add(new DestinationType(item.A, item.B, item.C)) );
问题在于List<>.Add返回的是void类型。Aggregate的第二个参数的返回类型需要是一个List。
如果我有一个支持“+”类型语义的列表类型,我可以将其作为第二个参数。
list + item
然而,我找不到任何支持这种操作的集合类型。
在 Linq 中,这应该很容易实现。有没有方法?另外,如果我错过了更简单的方法,我也很想学习。谢谢!