【问题标题】:Linq query for left-join左连接的Linq查询
【发布时间】:2015-09-13 06:15:42
【问题描述】:

我有 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 格式?

【问题讨论】:

    标签: c# sql linq sql-to-linq-conversion


    【解决方案1】:

    我是这样想的

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

    【讨论】:

      【解决方案2】:

      您可以执行以下操作:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多