我正在尋找的LINQ到SQL相當於此查詢:Linq to SQL:如何在沒有組的情況下進行聚合?
SELECT
[cnt]=COUNT(*),
[colB]=SUM(colB),
[colC]=SUM(colC),
[colD]=SUM(colD)
FROM myTable
這是沒有一組由的總和。我似乎無法找到任何方法來做到這一點,但沒有發出四個單獨的查詢(一個Count和三個Sum)。有任何想法嗎?
我正在尋找的LINQ到SQL相當於此查詢:Linq to SQL:如何在沒有組的情況下進行聚合?
SELECT
[cnt]=COUNT(*),
[colB]=SUM(colB),
[colC]=SUM(colC),
[colD]=SUM(colD)
FROM myTable
這是沒有一組由的總和。我似乎無法找到任何方法來做到這一點,但沒有發出四個單獨的查詢(一個Count和三個Sum)。有任何想法嗎?
這是我發現好像你還要做一組由...可以只使用常數:
var orderTotals =
from ord in dc.Orders
group ord by 1 into og
select new
{
prop1 = og.Sum(item=> item.Col1),
prop2 = og.Sum(item => item.Col2),
prop3 = og.Count(item => item.Col3)
};
這將產生以下SQL,這是不是最佳的,但工程:
SELECT SUM([Col1]) as [prop1], SUM([Col2]) as [prop2], COUNT(*) AS [prop3]
FROM (
SELECT 1 AS [value], [t0].[Col1], [t0].[Col2], [t0].[Col3]
FROM [table] AS [t0]
) AS [t1]
GROUP BY [t1].[value]
你可以使用Lambda表達式相同的查詢如下:
var orderTotals = db.Orders
.GroupBy(i => 1)
.Select(g => new
{
cnt = g.Count(),
ScolB = g.Sum(item => item.ColB),
ScolC = g.Sum(item => item.ColC)
});
http://social.msdn.microsoft.com/forums/en-US/linqproject一般/線程/ 3ef94aba-cb2d-45b4-8a6e-f3fc48cd8817/ – 2009-10-20 21:06:14