C# 使用LINQ在两个字典上进行左外连接
我正在尝试使用两个Dictionary对象进行左外连接。这些是对象:C# 使用LINQ在两个字典上进行左外连接,c#,linq,join,C#,Linq,Join,我正在尝试使用两个Dictionary对象进行左外连接。这些是对象: var leftSet = new Dictionary<int, string>() { { 1, "Michael"}, { 2, "John" }, { 3, "Bill" } }; var rightSet = ne
var leftSet = new Dictionary<int, string>()
{
{ 1, "Michael"},
{ 2, "John" },
{ 3, "Bill" }
};
var rightSet = new Dictionary<int, string>()
{
{ 1, "Another Michael"},
{ 3, "Another Bill" },
{ 4, "Tony" }
};
这会产生一个内部连接,而不是我想要的左外部连接。我知道我需要在leftElements.Key成为joinResult的一部分之前获取它,但之后我不知道如何编写select语句
任何帮助都将不胜感激,谢谢。更改
from result in joinResult
致:
完成左外连接
其他一切都可以保持不变。改变
from result in joinResult
致:
完成左外连接
其他一切都可以保持不变。谢谢!这是可行的,但我正试着弄清楚为什么会这样。我在joinResult.DefaultIfEmpty执行之后检查了结果,结果包含三个元素,其中{2,John}不是成员。所以我不明白select语句是从哪里获取的。@InvalidBrainException好问题!。因为我现在很忙,我会告诉你两件事,你应该读,而且不会花太长时间,第一件是,第二件是。@IvalidBrain例外,如果你在读了这两件事后仍然感到困惑,那么请留下评论,我有空的时候会给你回复。虽然在英国时间有点晚了,所以我不确定什么时候能给你回复:。谢谢你的链接-我已经读过了,对我来说主要的收获是一个后跟DefaultIfEmpty的连接就是如何在LINQ中完成左外连接的。这基本上就是第一个链接的第二段所说的!但是,当我将其分解并研究查询的每一行的结果时,joinResult.DefaultIfEmpty的结果不包含元素{2,John},但最后的select以某种方式将其返回!我的直觉是LINQ在幕后做了一些聪明的事情。谢谢你迄今为止的帮助。谢谢!这是可行的,但我正试着弄清楚为什么会这样。我在joinResult.DefaultIfEmpty执行之后检查了结果,结果包含三个元素,其中{2,John}不是成员。所以我不明白select语句是从哪里获取的。@InvalidBrainException好问题!。因为我现在很忙,我会告诉你两件事,你应该读,而且不会花太长时间,第一件是,第二件是。@IvalidBrain例外,如果你在读了这两件事后仍然感到困惑,那么请留下评论,我有空的时候会给你回复。虽然在英国时间有点晚了,所以我不确定什么时候能给你回复:。谢谢你的链接-我已经读过了,对我来说主要的收获是一个后跟DefaultIfEmpty的连接就是如何在LINQ中完成左外连接的。这基本上就是第一个链接的第二段所说的!但是,当我将其分解并研究查询的每一行的结果时,joinResult.DefaultIfEmpty的结果不包含元素{2,John},但最后的select以某种方式将其返回!我的直觉是LINQ在幕后做了一些聪明的事情。谢谢你迄今为止的帮助。
from result in joinResult.DefaultIfEmpty()