Skip to main content
 首页 » 编程设计

c#之我如何使用 LINQ 外部连接两个集合

2024年01月11日30luoye11

我有以下查询:

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() 
              };