Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SomeTable中选择Count(*)、SUM(someColumn)的LINQ/Lambda等效于什么_C#_Linq_Lambda - Fatal编程技术网

C# 从SomeTable中选择Count(*)、SUM(someColumn)的LINQ/Lambda等效于什么

C# 从SomeTable中选择Count(*)、SUM(someColumn)的LINQ/Lambda等效于什么,c#,linq,lambda,C#,Linq,Lambda,我认为我不必按特定列分组,以返回LINQ或lambda表达式中求和和和计数的聚合 有没有一种快速有效的方法可以在LINQ中或作为Lambda表达式复制以下T-SQL查询 SELECT COUNT(*), SUM(SomeIntegerColumn) From SomeTable 也许我遗漏了什么试试这个: from x in SomeTable group x by 1 into g select new { Count = g.Count(), Sum = g.Sum(x

我认为我不必按特定列分组,以返回LINQ或lambda表达式中求和和和计数的聚合

有没有一种快速有效的方法可以在LINQ中或作为Lambda表达式复制以下T-SQL查询

SELECT COUNT(*), SUM(SomeIntegerColumn) From SomeTable
也许我遗漏了什么

试试这个:

from x in SomeTable
group x by 1 into g
select new
{
     Count = g.Count(),
     Sum = g.Sum(x => x.SomeIntegerColumn)
}
诀窍是“虚拟”分组,它让您可以在一个查询中计算多个内容。

尝试以下方法:

from x in SomeTable
group x by 1 into g
select new
{
     Count = g.Count(),
     Sum = g.Sum(x => x.SomeIntegerColumn)
}

诀窍是“虚拟”分组,它允许您在一个查询中计算多个内容。

如果您真的想在没有分组的情况下进行计算,您可以:

var sumCount = 
    new { count = yourCollection.Count(), sum = yourCollection.Sum(i => i.SomeIntegerColumn) };

如果你真的想在没有团队的情况下完成,你可以:

var sumCount = 
    new { count = yourCollection.Count(), sum = yourCollection.Sum(i => i.SomeIntegerColumn) };

是否可以将两者都作为新对象?像new{SUM(col),Count(*)}一样,是否可以将两者都作为新对象获取?像new{SUM(col),Count(*)}一样,您仍然必须使用group by?但是用布尔值填充它?这很聪明+1@ShayanZafar,我不明白你说的布尔值是什么意思。。。是的,由于Linq聚合运算符的工作方式,您必须进行分组。所谓布尔值,我指的是“group x By 1”,这是否意味着如果表或集合中存在行/对象,它将分组?@ShayanZafar,因为分组键是常量,所以对每个项都是相同的,所以所有项目都将在同一组中。那么您仍然必须使用分组依据?但是用布尔值填充它?这很聪明+1@ShayanZafar,我不明白你说的布尔值是什么意思。。。是的,由于Linq聚合运算符的工作方式,您必须进行分组。所谓布尔值,我指的是“group x By 1”,这是否意味着如果表或集合中存在行/对象,它将分组?@ShayanZafar,因为分组键是常量,所以对每个项都是相同的,因此,所有项目都将在同一组中。此方法将枚举集合两次。如果它是一个小的内存集合,这并不太糟糕,但如果它是一个DB表,情况会更糟,因为它会导致执行两个查询。这一点很好。GROUPBY可能并不漂亮,但它的存在是有原因的。这不需要进行两次查询吗?我认为前面的答案可以在一个查询中完成。我不知道哪一个更有效。这可以在这里讨论。这种方法枚举集合两次。如果它是一个小的内存集合,这并不太糟糕,但如果它是一个DB表,情况会更糟,因为它会导致执行两个查询。这一点很好。GROUPBY可能并不漂亮,但它的存在是有原因的。这不需要进行两次查询吗?我认为前面的答案可以在一个查询中完成。我不知道哪一个更有效。这可以在这里讨论