gpt4 book ai didi

linq - 在 LINQ 查询中使用组

转载 作者:行者123 更新时间:2023-12-04 06:12:21 25 4
gpt4 key购买 nike

我正在使用 LINQ to CRM 提供商。

我正在查询信息,然后我使用 LINQ 来查询 LINQ to CRM 查询,以便我可以使用 GroupBy,因为 LINQ to CRM 提供程序不支持它。这是我到目前为止。

var linqQuery = (from r in orgServiceContext.CreateQuery("opportunity")
join c in orgServiceContext.CreateQuery("contact") on
((EntityReference)r["new_contact"]).Id equals c["contactid"] into opp
from o in opp.DefaultIfEmpty()
select new
{
OpportunityId = !r.Contains("opportunityid")
? string.Empty : r["opportunityid"],
CustomerId = !r.Contains("customerid")
? string.Empty : ((EntityReference)r["customerid"]).Name,
OwnerId = !r.Contains("ownerid")
? string.Empty : ((EntityReference)r["ownerid"]).Id.ToString(),
OwnerName = !r.Contains("ownerid")
? string.Empty : ((EntityReference)r["ownerid"]).Name.ToString(),
Priority = !r.Contains("opportunityratingcode")
? string.Empty : r.FormattedValues["opportunityratingcode"],
ContactName = !r.Contains("new_contact")
? string.Empty : ((EntityReference)r["new_contact"]).Name,
// ...
// other properties
});

var linqQuery2 = (from f in linqQuery.ToList()
group f by f.OwnerId into myGroup
select new
{
OrderCount = myGroup.Count()
});

但我也希望能够查询 linqQuery 中的其他变量来自 linqQuery2 .

所以我想要这样的东西:
var linqQuery2 = (from f in linqQuery.ToList()
group f by f.OwnerId into myGroup
select new
{
OwnerName = myGroup.OwnerName,
OrderCount = myGroup.Count()
});

这是可能的吗?

最佳答案

假设组中所有项目的 OwnerNames 将相同,那么您可以执行以下操作:

var linqQuery2 = (from f in linqQuery.ToList()
group f by f.OwnerId into myGroup
select new
{
OwnerName = myGroup.First().OwnerName,
OrderCount = myGroup.Count()
});

编辑:

如果您想多次使用第一项,我建议您使用 'let' 运算符:
var linqQuery2 = (from f in linqQuery.ToList()
group f by f.OwnerId into myGroup
let first = myGroup.First()
select new
{
OwnerName = first.OwnerName,
OrderCount = myGroup.Count()
});

关于linq - 在 LINQ 查询中使用组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com