繁体   English   中英

我如何将LINQ外连接两个集合?

[英]How can I LINQ outer join two collections?

我有以下查询:

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查询转换为外部联接,以便它始终报告每个公司,然后统计通过行和partitionkey连接器连接了多少个主题?

不知道您使用的是什么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()
              };

暂无
暂无

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

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