繁体   English   中英

在LINQ中遇到Group By麻烦

[英]Having trouble with a Group By in LINQ

这是我的LINQ查询:

var results = from l in leads
   from qr in l.QuoteRevisions
   from rp in qr.RevisionProducts
   select new QuoteSearchItem
   {
       ID = l.ID,
       ....
       ProductCodes = l.QuoteRevisions.SelectMany(qr => qr.RevisionProducts)
            .Select(p => p.Product.ProductCode).ToList()
   };

我们尝试填充的对象如下所示:

public class QuoteSearchItem
{
    public LeadID {get; set; }
    ....
    public List<string> ProductCodes { get; set; }
    ....
}

我得到的结果几乎是准确的。 但是问题是,当产品代码不止一个时,每条线索都会得到相同的行。 因此,而不是得到这个:

{"LeadID": "12", "ProductCodes": ["Code1", Code2"]}

我得到这个:

{"LeadID": "12", "ProductCodes": ["Code1", Code2"]}
{"LeadID": "12", "ProductCodes": ["Code1", Code2"]}

因此,我需要按l.LeadID分组。 但是我在语法上遇到了麻烦。 我尝试了这个:

var results = from l in leads
   from qr in l.QuoteRevisions
   from rp in qr.RevisionProducts
   group l by l.ID into lds
   select new QuoteSearchItem
   {
       ID = lds.ID,
       ....
       ProductCodes = lds.QuoteRevisions.SelectMany(qr => qr.RevisionProducts)
            .Select(p => p.Product.ProductCode).ToList()
   };

但是然后“ lds”没有包含任何东西。 不确定如何执行此操作。

谢谢!

您正在选择所有修订产品,然后构建潜在顾客列表。 这就是问题所在,因为现在对于每个修订版产品,您都有一个元素包含所有潜在客户的修订版产品。

尝试from删除后续内容:

var results = from l in leads
    select new QuoteSearchItem
    {
        ID = l.ID,
        ....
        ProductCodes =
            l.QuoteRevisions
                .SelectMany(qr => qr.RevisionProducts)
                .Select(p => p.Product.ProductCode)
                .ToList()
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM