这个聚合 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 来生成笛卡尔积,这在普通方法语法中更难维护。
我有一个使用 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 来生成笛卡尔积,这在普通方法语法中更难维护。