Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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#_Sql_Linq_Sql To Linq Conversion - Fatal编程技术网

C# 左连接的Linq查询

C# 左连接的Linq查询,c#,sql,linq,sql-to-linq-conversion,C#,Sql,Linq,Sql To Linq Conversion,我有三张桌子: * UserSettingsType { general, UserSpecific) * UserSettingsOption { Currency:general, Language:general, Location:Userspecific } * UserSettingsValue { Currency:USD, Location:US } 如果我运行SQL查询: select ust.Name Type, uso.Name Option, usv.Value Val

我有三张桌子:

* UserSettingsType { general, UserSpecific)
* UserSettingsOption { Currency:general, Language:general, Location:Userspecific }
* UserSettingsValue { Currency:USD, Location:US }
如果我运行
SQL
查询:

select ust.Name Type, uso.Name Option, usv.Value Value from UserSettingOption uso 
 inner join UserSettingType ust on ust.Id = uso.Type_Id
 left join UserSettingValue usv on usv.Setting_Type_Id = uso.Id
输出为:

Type         | Name      | Value
--------------------------------
General      | Currency  | USD
General      | Language  | NULL
UserSpecific | Location  | US
如何将上面的内容转换为
Linq
格式?

我这样想

var item=(from a in contex.usersettingoption
          from b in contex.usersettingtype.where(x=>x.id==a.Type_id).DefaultIfEmpty()
          from c in contex.usersettingvalue.where(x=>x.setting_Type_Id==a.id).DefaultIfEmpty()
           select new {b.Type,a.Name,c.value}).ToList()

您可以执行以下操作:

var result = (form uso in Context.UserSettingOption
              join ust in Context.UserSettingType on uso.Type_Id equals ust.Id
              join usv in Context.UserSettingValue on uso.Id equals usv.Setting_Type_Id into tmpusv
              from lusv in tmpusv.DefaultIfEmpty()
              select new
              {
                 Type = ust.Name, 
                 Option = uso.Name, 
                 Value = lusv != null ? lusv.Value : null
              }).ToList();