这是我的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()
};
然后&#34; lds&#34;没有看到包含任何东西。不知道怎么做。
谢谢!
答案 0 :(得分:1)
您正在选择所有修订产品,然后构建潜在客户列表。这就是问题所在,因为现在对于每个修订版产品,您都会得到一个包含所有修订产品的元素。
尝试删除后续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()
};