c# - 使用LINQ,如何将集合聚合为指定类型?

标签 c# linq

Aggregate让您提供一个自定义函数来运行 IEnumerable<T>并返回 TSum让您拉一个 int使用自定义函数从每个元素中提取出来,然后将它们全部添加到一起。

但是如果我想做这样的事情怎么办:

struct S
{
 public int i;
 public int j;
}

int Aggregate(IEnumerable<S> data)
{
 int ret = 0;
 foreach(x in data)
 {
  ret ^ = Math.Max(x.i,x.j);
 }
 return ret;
}

就像我想使用指定的函数聚合到指定的类型一样。 LINQ 是否提供此功能还是必须组合多个 LINQ 操作?

最佳答案

您可以使用 LINQ 的 Aggregate 之一执行此操作的函数:

Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

例如:

var aggregate = data.Aggregate(0, (acc, cur) => acc ^ Math.Max(cur.i, cur.j));

docs 中所述:

Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value.

关于c# - 使用LINQ,如何将集合聚合为指定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61389276/

相关文章:

带有可能的 NULL id 的 LINQ Join 语句?

c# - 在 ASP.Net MVC 5 项目中通过 LINQ 查询删除条目列表

c# - ASP.net c# LINQ for 循环

c# - Entity Framework 中的排序列属性

C#事件继承

C# 任务求和变量

c# - 如何自动添加gridview单元格

c# - LINQ 从第一个列表中选择

c# - 避免 SingleOrDefault 空引用异常

c# - 包括空检查以在列表中查找索引