我有一份身份证和名字的 list ,还有一份身份证和姓氏的 list .有些人没有名字,有些人没有姓氏;我想在这两个列表上做一个完整的外部连接.
因此,下面列出了以下列表:
ID FirstName
-- ---------
1 John
2 Sue
ID LastName
-- --------
1 Doe
3 Smith
应产生:
ID FirstName LastName
-- --------- --------
1 John Doe
2 Sue
3 Smith
我是LINQ的新手(如果我是跛脚的话,请原谅我),我已经找到了很多关于"LINQ外部联接"的解决方案,它们看起来非常相似,但实际上似乎是左外部联接.
到目前为止,我的try 是这样的:
private void OuterJoinTest()
{
List<FirstName> firstNames = new List<FirstName>();
firstNames.Add(new FirstName { ID = 1, Name = "John" });
firstNames.Add(new FirstName { ID = 2, Name = "Sue" });
List<LastName> lastNames = new List<LastName>();
lastNames.Add(new LastName { ID = 1, Name = "Doe" });
lastNames.Add(new LastName { ID = 3, Name = "Smith" });
var outerJoin = from first in firstNames
join last in lastNames
on first.ID equals last.ID
into temp
from last in temp.DefaultIfEmpty()
select new
{
id = first != null ? first.ID : last.ID,
firstname = first != null ? first.Name : string.Empty,
surname = last != null ? last.Name : string.Empty
};
}
}
public class FirstName
{
public int ID;
public string Name;
}
public class LastName
{
public int ID;
public string Name;
}
但这会返回:
ID FirstName LastName
-- --------- --------
1 John Doe
2 Sue
我做错了什么?