【问题标题】:Linq to SQL Group by and Sum in SelectLinq to SQL Group by and Sum in Select
【发布时间】:2012-12-08 22:54:48
【问题描述】:

我需要将该 SQL 查询转换为 Linq:

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();

你们中有人知道如何解决这个问题吗?

感谢您的帮助!

【问题讨论】:

  • ArticleName 是 orderedArt 中的一列吗?我会下载LINQPad。它可以从 SQL 转换为 Linq,因此您可以将查询放入其中并提取正确的 Linq 代码。
  • 是的,ArticleName 是orderedArt 中的一列。该错误仅发生在选择中。 GroupBy 有效。我会试试 LINQPad,谢谢你的提示 :)
  • 我会试试 LINQPad。它至少应该为您指明正确的方向。

标签: sql asp.net-mvc linq entity-framework


【解决方案1】:

您收到此错误是因为 Grouping 不返回 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();

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 2010-12-13
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2011-05-18
    • 2010-12-31
    • 2010-10-13
    • 2014-11-26
    相关资源
    最近更新 更多