我有以下查询:
var rowData = companies.Select(
t => new CompanyDetail
{
CompanyID = t.Title,
Subjects = subjects.Count ( u => t.RowKey == "0000" + u.PartitionKey)
}).ToList();
public class CompanyDetail
{
[DisplayName("Company")]
public string CompanyID { get; set; }
[DisplayName("Subjects")]
public Int32 Subjects { get; set; }
}
查询输出如下所示:
CompanyID Subjects
1 2
2 4
3 1
但是,如果公司没有主题,我就会遇到问题。我想看看:
CompanyID Subjects
1 2
2 4
3 1
4 0
有没有一种方法可以将此 LINQ 查询转换为外部联接,以便它始终报告每家公司,然后计算通过行和分区键连接器连接的主题数量?
请您参考如下方法:
在不知道您使用的 LINQ 提供程序的情况下很难回答这个问题 - 例如,您的查询将按照您在 LINQ to Objects 中的预期方式工作。
也许值得尝试使用显式 GroupJoin 来说服提供者为您提供空组:
var rowData = from company in companies
join subject in subjects
on company.RowKey equals "0000" + subject.PartitionKey
into companySubjectGroup
select new
{
CompanyID = company.Title,
Subjects = companySubjectGroup.Count()
};
