繁体   English   中英

Linq查询左联接

[英]Linq query for left-join

我有3张桌子:

* 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 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();

我想这样

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM