2010-06-04 44 views
1

有什麼辦法來創建LINQ2SQL查詢,將被翻譯成:我發現soluthion與DataObjects.NET如何創建Linq2Sql查詢,計算聚合?

SELECT COUNT(*) as totalCount , 
SUM(v.field1) AS totalfield1, 
.... 
SUM(v.<fieldN>) AS total<fieldN> 
FROM [dbo].[SomeTable] v 

回答

0

你可以嘗試類似

var query = from p in SalesOrderDetails 
     group p by p.ProductID into g 
      select new 
      {id = g.Key, Count = g.Count(), Sum = g.Sum(p => p.OrderQty)}; 

Console.Write(query); 

但你的解決方案使用假鑰匙然後枚舉似乎好多了。

var query = from p in SalesOrderDetails 
     group p by p.ProductID into g 
     select new 
    {id = g.Key, FalseKey = 1, Count = g.Count(), Sum = g.Sum(p => p.OrderQty) }; 

//Console.Write(query); 
var result = from q in query 
        group q by q.FalseKey into c 
        select new { summation = c.Sum(q => q.Sum)}; 

Console.Write(result); 
0

var query = 
    from product in Query.All<Product>() 
    where product.ProductName.Contains("a") 
    select new {Product = product, FakeKey = 0} into i 
    group i.Product.UnitPrice by i.FakeKey into g 
    select new { Count = g.Count(), Price = g.Sum() }; 

    var result = query.AsEnumerable().Single(); 

SQL:

SELECT Count_big(*)   AS [column1], 
     SUM([a].[UnitPrice]) AS [column2] 
FROM (SELECT [b].[ProductId], 
       [b].[TypeId], 
       [b].[ProductName], 
       [b].[Seller], 
       [b].[Category.Id], 
       [b].[ProductType], 
       [b].[UnitPrice], 
       [b].[UnitsInStock], 
       [b].[UnitsOnOrder], 
       [b].[ReorderLevel], 
       [b].[QuantityPerUnit], 
       0 AS [column] 
     FROM [dbo].[Products] [b] 
     WHERE ([b].[ProductName] LIKE '%a%')) [a] 
GROUP BY [a].[column];