[英]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.