如何爲以下TSQL編寫Linq-to-SQL語句?用於單個表達式中多個聚合值的Linq-to-SQL語句
select
count(*),
sum(Amount),
avg(Amount),
min(Amount),
max(Amount)
from
TableName
如何爲以下TSQL編寫Linq-to-SQL語句?用於單個表達式中多個聚合值的Linq-to-SQL語句
select
count(*),
sum(Amount),
avg(Amount),
min(Amount),
max(Amount)
from
TableName
單獨提取值可能更容易,但您可以使用匿名類型。
var aggregates = new {
Count = context.TableName.Count(),
Sum = context.TableName.Sum(t => t.Amount),
Avg = context.TableName.Avg(t => t.Amount),
Min = context.TableName.Min(t => t.Amount),
Max = context.TableName.Max(t => t.Amount)
};
你可以這樣做:
var result = new
{
Count = db.TableName.Count(),
Sum = db.TableName.Sum(r => r.Amount),
Average = db.TableName.Avg(r => r.Amount),
Min = sb.TableName.Min(r => r.Amount),
Max = db.TableName.Max(r => r.Amount)
}
HACK ALERT,但它的作品。通過一個條件,要力圖您記錄所有的人分享:
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)
};
這將生成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]
有涉及子查詢,但嘿!它只有一分貝旅行
+1或者只是'g組到gg' – Magnus 2011-05-30 17:10:02
想要產生5個單獨的查詢? – 2010-05-07 15:25:50
你不能這樣做,否則在LINQ中,這些方法是'終結者' – argh 2010-05-07 15:30:20