2012-12-21 26 views
4

我需要轉換的是SQL查詢到的Linq:LINQ到SQL GROUP BY和點心在選擇

SELECT 
    SUM([ArticleAmount]) as amount 
    ,[ArticleName] 
FROM [DB].[dbo].[OrderedArticle] 

group by articlename 

order by amount desc 

我嘗試下面的代碼,但我在「a.ArticleName」,說的定義得到一個錯誤「ArticleName」將會丟失。

var sells = orderedArt 
      .GroupBy(a => a.ArticleName) 
      .Select(a => new {Amount = a.Sum(b => b.ArticleAmount),Name=a.ArticleName}) 
      .OrderByDescending(a=>a.Amount) 
      .ToList(); 

有你的人和想法如何解決這個問題?

感謝您的幫助!

+0

是'在'orderedArt' ArticleName'列?我會下載[LINQPad](http://www.linqpad.net/)。它可以從SQL轉換爲Linq,因此您可以將查詢放入並提取正確的Linq代碼。 – ChrisF

+0

是的,ArticleName是有序藝術中的一列。 錯誤只發生在選擇中。 GroupBy工作。 我會嘗試LINQPad,感謝您的提示:) – Linus

+0

我想給LINQPad一試。它至少應該指出你在正確的方向。 – ChrisF

回答

6

您收到此錯誤,因爲分組沒有返回IEnumerable<OrderedArticle>IEnumerable<IGrouping<string, OrderedArticle>>

你需要改變你的代碼,使用a.Key

var sells = orderedArt 
    .GroupBy(a => a.ArticleName) 
    .Select(a => new { Amount = a.Sum(b => b.ArticleAmount), Name = a.Key}) 
    .OrderByDescending(a => a.Amount) 
    .ToList(); 
+0

這工作完美! 非常感謝:-) – Linus

+0

我也試過LINQPad,但沒有從我的查詢中得到LINQ代碼。 – Linus