如何使用 Linq 的聚合函数 C# 添加到列表

2024-01-07

我有一个类型的对象集合,我想将其转换为不同类型。这可以使用 foreach 轻松完成,但我想弄清楚如何使用 Linq 的聚合函数来完成此操作。

问题是所有聚合示例都使用行字符串或 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)) );

问题是 List.Add 返回 void。 Aggregate 的第二个参数的返回类型需要是 List。

如果我有一个支持“+”类型语义的列表类型,我可以只设置第二个参数

list + item

但是我找不到任何支持这种事情的集合类型。

看起来这在 Linq 中应该很容易实现。有办法吗?另外,如果我缺少一种完全简单的方法,我也很想了解这一点。谢谢!


假设这是 LINQ to Objects,请尝试...

var newSet = set.Aggregate(new List<DestinationType>(),
                                    (list, item) =>
                                    {
                                        list.Add(new DestinationType(item.A, item.B, item.C));
                                        return list;
                                    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Linq 的聚合函数 C# 添加到列表 的相关文章