Как мне указать «не в» в этом лямбда-выражении? - PullRequest
5 голосов
/ 13 января 2012

У меня быстрый вопрос, потому что мой мозг не будет работать со мной ...
Где я могу указать, что я хочу, чтобы user_id был в 'Users', а НЕ в 'Groups'?

db.Users.Join(db.Groups, a => a.user_id, b => b.user_id, (a, b) => new SelectListItem
{
  Value = a.user_id.ToString(),
  Text = a.surname + " " + a.lastname
});

Ответы [ 2 ]

11 голосов
/ 13 января 2012

Должно работать следующее (при условии, что я правильно понял ваш вопрос):

db.Users
.Where(x => !db.Groups.Any(y => y.user_id == x.user_id))
.Select(a => new SelectListItem
    {
        Value = a.user_id.ToString(),
        Text = a.surname + " " + a.lastname
    });
0 голосов
/ 13 января 2012

вы можете попробовать что-то вроде этого:

var query =  from u in db.Users
             where !(from g in dc.Groups
                     select g.user_id)
                     .Contains(u.user_id)
             select new SelectListItem { 
                         Value = u.user_id.ToString(),
                     Text = u.surname + " " + u.lastname
         };

Взгляните сюда: http://introducinglinq.com/blogs/marcorusso/archive/2008/01/14/the-not-in-clause-in-linq-to-sql.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...