繁体   English   中英

我可以使用LINQ进行外部联接吗?

[英]Can I perform an outer join with LINQ?

我有两个类,其中镇的key2链接到实用程序的密钥1。 数据未存储在SQL表中,因此无法链接和获取SQL所需的信息。

public class Town {
    key1 string { get; set; }
    key2 string { get; set; }
    name string { get; set; }
}

public class Utility {
    key1 string { get; set; }
    key2 string { get; set; }
   name string { get; set; }
}

数据如下

Town
-------
key1             key2         name
0                 1               Liverpool
0                 2               Preston
0                 3               Wigan

Utility
------

key1      key2
1           West 2
1           West 3
3           East 1
3           East 2

我想做的是创建一个报告,该报告显示所有城镇的列表,并在第二列显示每个城镇有多少个公用事业。

该报告看起来像这样

Liverpool  2
Preston    0
Wigan      2

无法仅从公用事业信息中获取数据,因为我需要显示一个城镇没有公用事业的地方。 我在想的是一些遍历Towns的代码,然后对每个Towns进行检查并计算出实用程序行的数量。

如果数据存储在以下集合中:

ICollection<Town> Towns
ICollection<Utility> Utilities

然后,是否存在某种LINQ查询,该查询将以某种方式以类似于SQL中的外部联接的方式联接这些集合?

查看Microsoft的101 LINQ示例 它提供了出色的联接示例。 我不知道没有它怎么做LINQ。

这将起作用,并且最简单:

var results = Towns.Select(t => new { 
                       Town = t,
                       Utilities = Utilities.Count(u => t.key2 == u.key1)
              })
              .ToList();

暂无
暂无

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

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