这个聚合 Lambda 表达式可以转换为 LINQ 查询吗?

Can this Aggregate Lambda expression be converted to a LINQ query?

我有一个使用 Lambda 表达式通过聚合方法求和的整数列表:

var mylist = new int[] { 3, 4, 5 };

var result = mylist.Aggregate((a, b) => a + b);

据我了解,Lambda 表达式始终可以转换为 LINQ 查询。这样的 LINQ 查询将如何查找我的示例?

编辑:我明白 .Sum 在我的示例中添加数字可能会更好。但我真的很想知道这个聚合在使用 LINQ 查询时会是什么样子。

在这种情况下,聚合函数将数字相互相加。所以,等效函数是 SUM

var qry = mylist.Sum(x=>x);

var qry = (from n in mylist select n).Sum();

[编辑]

OP 在没有通知我的情况下向问题添加了额外信息。

是的,可以"convert" Aggregate函数到linq查询中,但是需要扩展方法。看这篇文章:Cumulating values with LINQ

它已经是一个 LINQ 查询,聚合是一个 LINQ 运算符,我假设你的意思是它在 LINQ 理解语法中的样子?理解语法只有一些内置功能(select,其中,多个 selects,groupby 等),它没有内置所有运算符,因此当您需要其中之一时(例如aggregate) 你把它包在括号里并继续使用常规语法。由于除了聚合之外什么都没有,所以无法举个例子,所以我将从另一个查询开始:

var mylist = new int[] { 3, 4, 5, 6, 7, 8 };

var result = mylist
    .Where(item=>item %2 == 0)
    .Aggregate((a, b) => a + b);

var ComprehensiveResult = 
    (from item in mylist
     where item % 2 == 0
     select item)
    .Aggregate((a, b) => a + b);

综合语法更像是 "LINQ for people coming from SQL introduction",您可以在其中做任何您使用运算符无法做到的事情,但反之则不然,因为并非所有运算符都内置了替换项.唯一想到综合语法更好(除了个人品味)的是多个 selects 来生成笛卡尔积,这在普通方法语法中更难维护。