2013-05-01 61 views
-2
var product = db.Products 
       .Where(x => x.ProductKey == 310) 
       .Join(db.InternetSales, p => p.ProductKey, 
         c => c.ProductKey, (p, c) => c) 
       .SingleOrDefault(); 

這是我的查詢,但我不知道如何按產品名稱和總和銷售額進行分組。Lambda for Groupby和Sum?

+4

請問問題時要注意職位預覽 - 很長的線比增加了一些換行到你的代碼更難讀(我現在已經完成)。接下來,它完全不清楚你試圖達到什麼目的,因爲你最後只會得到一個結果... – 2013-05-01 20:26:42

回答

0

試試這個:

var product = db.Products.Where(x => x.ProductKey == 310) 
       .Join(db.InternetSales, p => p.ProductKey, 
         c => c.ProductKey, (p, c) => c) 
       .GroupBy(c => c.ProductName) 
       .Select(g => new { g.Key, TotalSales = g.Sum(x => x.Sales) }) 
       .SingleOrDefault(); 

如果你只有需要的總和,試試這個:

var totalSales = db.Products.Where(x => x.ProductKey == 310) 
        .Join(db.InternetSales, p => p.ProductKey, 
          c => c.ProductKey, (p, c) => c) 
        .GroupBy(c => c.ProductName) 
        .SingleOrDefault() 
        .Sum(x => x.Sales); 
+0

好吧非常感謝你,但我在這裏遇到了問題:傳入字典的模型項目是鍵入'<> f__AnonymousType4'2 [System.String,System.Nullable'1 [System.Decimal]]',但此字典需要類型爲'BikeSales.BikeSaleDatabase.InternetSale'的模型項。 – 2013-05-01 21:08:11

+0

@KenginVeron這是你聲明的視圖模型類型(如果你使用的是剃鬚刀,就是.cshtml文件頂部的'@model InternetSale')和你從控制器通過'View傳入的視圖模型之間的衝突'方法。我需要更多關於您的控制器和視圖的更多信息來進一步幫助您。 – 2013-05-01 21:31:57

0

你不需要Join可言,因爲你已經有ProductKey這是然後用來加入InternetSales表。

我認爲你可以用下面的結束:

var TotalSales = db.InternetSales 
        .Where(s => s.ProductKey == 310) 
        .Select(s => s.Sales) 
        .Sum(); 
+0

@ p.s.w.g在所有版本的LINQ to Entities中都不支持:[支持和不支持的LINQ方法(LINQ to Entities)](http://msdn.microsoft.com/zh-cn/library/bb738550.aspx) – MarcinJuraszek 2013-05-01 20:40:24