2014-12-18 4 views
1

Я знаю, что есть, вероятно, тонна вопросов, как это уже, но у меня возникают проблемыКак написать этот запрос в linq?

select * 
from [Group] 
where GroupId not in 
(select GroupId 
from CustomerGroup 
where CustomerId = 189621) 

я есть myGroups = db.Groups.Where (е => e.GroupId), но как я говорю не в?

я вроде там

var myGroups = from a in db.Groups 
where!(from b in db.CustomerGroups 
where b.CustomerId == customer.CustomerId) 

ответ

2
var groupIds = from cg in db.CustomerGroups 
       where cg.CustomerId == 189621 
       select cg.GroupId; 
var myGroups = from g in db.Groups 
       where !groupIds.Contains(g.GroupId) 
       select g; 

нужен список дисквалифицировать первый. NOT IN - это в основном !(IEnumerable).Contains() в LINQ (поскольку вы сравниваете набор).

1

Использование лямбда-выражения, вы, вероятно, может сделать это так

var groupIds = db.CustomerGroups.Where(x => x.CustomerId == 189621).Select(x => x.GroupId); 
var myGroups = db.CustomerGroups.Where(x => !groupIds.Contains(x.GroupId)).ToList();