首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IGrouping不包含

IGrouping不包含
EN

Stack Overflow用户
提问于 2017-01-19 04:30:19
回答 1查看 6K关注 0票数 3

我一直在这里查看其他线程,以学习如何在linq中执行GroupBy。我遵循对其他人起作用的确切语法,但是,它不起作用。

以下是查询:

代码语言:javascript
复制
var results = from p in pending
              group p by p.ContactID into g
              let amount = g.Sum(s => s.Amount)
              select new PaymentItemModel
              {
                  ContactID = g.ContactID, // <--- Error here
                  Amount = amount
              };

pending是一个包含ContactIDAmount等列的List<T>,但这是我唯一关心的两个查询。

问题是,在select new中,g.不会给我原始列表pending中的任何列。当我尝试的时候,我得到:

IGrouping <int, LeadPurchases>不包含ContactID的定义,也没有扩展方法blah .

这就是我试图模仿的SQL:

代码语言:javascript
复制
SELECT 
    lp.PurchasedFromContactID, 
    SUM (lp.Amount) 
FROM 
    LeadPurchases lp
GROUP BY 
    lp.PurchasedFromContactID
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 04:33:36

您是根据ContactID进行分组的,所以它应该是结果的关键,所以您必须使用g.Key而不是g.ContactID;这意味着查询应该如下所示:

代码语言:javascript
复制
from p in pending
group p by p.ContactID into g
let amount = g.Sum(s => s.Amount)
select new PaymentItemModel
       {
           ContactID = g.Key,
           Amount = amount
       };

更新:

如果您想要基于多个列执行分组,那么GroupBy子句将如下所示:

代码语言:javascript
复制
group p by new
{
    p.ContactID,
    p.Field2,
    p.Field3
}into g
select new PaymentItemModel()
{
    ContactID = g.Key.ContactID,
    anotherField = g.Key.Field2,
    nextField = g.Key.Field3       
};
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41733775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档