【问题标题】:nested IN subquery in linq to sqllinq to sql中的嵌套IN子查询
【发布时间】:2015-06-17 11:14:30
【问题描述】:

困惑如何将这个 sql 查询写入 linq to sql

select FirstName from [User] where [UserId] in(

select LenderId from AffiliateLenderRelation where AffiliateId in (select Userid From [User] where [UserId] = 11)
)

到目前为止我已经尝试过什么

var innerquery = from iq in db.AffiliateLenderRelations where iq.AffiliateId == loggedInUser.UserId select iq.AffiliateId;
                List<SelectListItem> lenders = db.Users
                .Where(o => o.AccountTypeId == 1 && o.Deleted == false && innerquery.Contains(o.UserId))
                .Select(o => new SelectListItem()
                {
                    Value = o.UserId.ToString(),
                    Text = o.FirstName
                }).ToList();
                        lenders.Insert(0, new SelectListItem() { Value = "0", Text = "All" });

【问题讨论】:

    标签: sql linq linq-to-sql


    【解决方案1】:

    您的代码中的一切都很好,我猜只有一个错误。

    将选择 iq.AffiliateId 更改为 => iq.LenderId

    var innerquery = from iq in db.AffiliateLenderRelations where iq.AffiliateId == loggedInUser.UserId select iq.AffiliateId;
                    List<SelectListItem> lenders = db.Users
                    .Where(o => o.AccountTypeId == 1 && o.Deleted == false && innerquery.Contains(o.UserId))
                    .Select(o => new SelectListItem()
                    {
                        Value = o.UserId.ToString(),
                        Text = o.FirstName
                    }).ToList();
                            lenders.Insert(0, new SelectListItem() { Value = "0", Text = "All" });
    

    【讨论】:

      【解决方案2】:

      我认为不需要嵌套查询。您可以使用连接查询。试试这个

      var lobj= (from u db.Users.where(x=>x.UserId==11)
                                       let ces = from ce in db.AffiliateLenderRelation.where( y=> y.AccountTypeId == 1 && y.Deleted == false )
                                                 select ce.LenderId 
                                       where ces.Contains(u.UserID)
                                   .Select(o => new SelectListItem()
                          {
                              Value = o.UserId.ToString(),
                              Text = o.FirstName
                          })).ToList();  
      

      【讨论】:

      • 我已经更新了我的问题,有一些变化,你能更新你的答案吗,我想以使用子查询为例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2010-09-08
      • 2011-06-16
      相关资源
      最近更新 更多