我可以用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中的外连接的方式将这些集合连接起来?
查看微软的101 LINQ示例。它提供了联接的优秀示例。我不知道没有它怎么做LINQ。
这样就可以了,而且是最直接的:
var results = Towns.Select(t => new {
Town = t,
Utilities = Utilities.Count(u => t.key2 == u.key1)
})
.ToList();