我有一个类型的对象集合,我想转换为不同的类型.这可以通过foreach轻松完成,但我想弄清楚如何使用Linq的聚合函数来完成它.
问题是所有Aggregate示例都使用类型行string或int,它们支持'+'运算符.我希望累加器类型是一个列表,它不支持'+'语义.
这是一个简单的例子:
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)) );
Run Code Online (Sandbox Code Playgroud)
问题是List <>.添加返回void.Aggregate的第二个参数的返回类型需要是List.
如果我有一个支持'+'类型语义的列表类型,我可以创建第二个参数
list + item
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何支持这种东西的集合类型.
在Linq中,这似乎很容易实现.有办法吗?此外,如果我错过了一个更简单的方法,我也很想了解这一点.谢谢!