LINQ到SQL语句在单一的表达多个集合值 [英] Linq-to-SQL statement for multiple aggregate values in single expression

查看:203
本文介绍了LINQ到SQL语句在单一的表达多个集合值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎么会写一个LINQ到SQL语句下面的TSQL?



 选择
计数( *),
总和(金额),
平均值(金额),
分(金额),
最大值(金额)

表名


解决方案

HACK ALERT 的,但它的工作原理。

  VAR的结果=从克db.Employees 
:由所有的人共享一个条件,要力图您的记录由g.Id.GetType()G组== typeof运算(int)的成GG
选择新的
{
计数= gg.Count(),
总和= gg.Sum (X => x.Salary)
};

这生成SQL:

  SELECT COUNT(*)AS [计数],SUM([T1]。[薪水])AS [心] 
FROM(
选择1 AS [值],[ T0]。[薪水]
从[DBO]。[雇员] AS [T0]
)AS [T1]
GROUP BY [T1] [价值]

有涉及子查询,但嘿!这只是1分贝行程


How would I write a Linq-to-SQL statement for the following TSQL?

select 
  count(*),
  sum(Amount),
  avg(Amount),
  min(Amount),
  max(Amount) 
from 
  TableName

解决方案

HACK ALERT, but it works. Try to group your records by a condition all of them share:

var result = from g in db.Employees
        group g by g.Id.GetType() == typeof(int) into gg
        select new 
        {
            Count = gg.Count(),
            Sum = gg.Sum(x => x.Salary)
        };

This generates the SQL:

SELECT COUNT(*) AS [Count], SUM([t1].[Salary]) AS [Sum]
FROM (
SELECT 1 AS [value], [t0].[Salary]
FROM [dbo].[Employee] AS [t0]
) AS [t1]
GROUP BY [t1].[value]

There is a subquery involved, but hey! it's only one db trip

这篇关于LINQ到SQL语句在单一的表达多个集合值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆