C# 如何在Linq中获得左外连接?
我的数据库中有两个表如下所示: 客户:C# 如何在Linq中获得左外连接?,c#,.net,linq,linq-to-sql,C#,.net,Linq,Linq To Sql,我的数据库中有两个表如下所示: 客户: C_ID city -------------- 1 Dhaka 2 New york 3 London 个人信息: P_ID C_ID Field value ------------------------------- 1 1 First Name Nasir 2 1 Last Name Uddin 3 2 First Name Jon 4 3
C_ID city
--------------
1 Dhaka
2 New york
3 London
个人信息:
P_ID C_ID Field value
-------------------------------
1 1 First Name Nasir
2 1 Last Name Uddin
3 2 First Name Jon
4 3 First Name Lee
我需要这样的选择结果: C_ID='1':
C_ID Name (First Name + Last Name) City
------------------------------------------
1 Nasir Uddin Dhaka
C_ID Name (First Name + Last Name) City
---------------------------------------------
2 Jon New york
C_ID='2':
C_ID Name (First Name + Last Name) City
------------------------------------------
1 Nasir Uddin Dhaka
C_ID Name (First Name + Last Name) City
---------------------------------------------
2 Jon New york
相应的Linq查询是什么样子的
谢谢Nahid遵循前面的答案,例如您可以看到解决此问题的结构,例如:
var result = from customer in customers
from personalFirst in personal
.Where(pf => pf.Field == "First Name" && pf.C_ID == customer.C_ID)
.DefaultIfEmpty()
from personalLast in personal
.Where(pl => pl.Field == "Last Name" && pl.C_ID == customer.C_ID)
.DefaultIfEmpty()
where customer.C_ID == 2
select new { customer.C_ID, Name = (personalFirst != null ? personalFirst.Value : "") + " " + (personalLast != null ? personalLast.Value : "") };
显然,如果您想要所有记录,那么请取消对C_ID=2的限制。在将近50个问题之后,您应该开始使用编辑器中的代码块按钮查看答案。请向下投票人解释原因?LINQ工作,因此回答了这个问题。如果有更好的方法(而且可能有),那么它就值得展示