我可以用LINQ执行外连接吗?

本文关键字:连接 执行 LINQ 我可以 | 更新日期: 2023-09-27 18:16:16

我有两个类,其中town的键2链接到utility的键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

数据不能仅从公用事业信息中获得,因为我需要显示哪个城镇没有公用事业。我是什么我想到的是一些在城镇中迭代的代码,然后对每个城镇进行检查并计算数字的实用程序行。

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

ICollection<Town> Towns
ICollection<Utility> Utilities

那么是否有某种LINQ查询会以类似于SQL中的外连接的方式将这些集合连接起来?

我可以用LINQ执行外连接吗?

查看微软的101 LINQ示例。它提供了联接的优秀示例。我不知道没有它怎么做LINQ。

这样就可以了,而且是最直接的:

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