LINQ外部如何加入两个集合?

时间:2011-12-03 03:11:59

标签: c# linq

我有以下查询:

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连接器连接的主题数量?

1 个答案:

答案 0 :(得分:0)

如果不知道您正在使用哪种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()
              };