Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Linq中获得左外连接?_C#_.net_Linq_Linq To Sql - Fatal编程技术网

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工作,因此回答了这个问题。如果有更好的方法(而且可能有),那么它就值得展示