2015-06-17 2 views
1

спутать, как написать этот SQL запрос в LINQ к SQLвложенные IN подзапрос в LINQ к 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" }); 

ответ

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" }); 
1

Я думаю, что не нужен вложенный запрос. Вы можете использовать запрос соединения. Попробуйте это

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

я обновил свой вопрос, есть некоторые изменения, пожалуйста, вы можете обновить ваш ответ, я хочу в качестве примера, используя подзапрос , – Teerth

+0

Вы протестировали это .... –

+0

нет его не работает – Teerth

Смежные вопросы