[英]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.