Как удалить выбранные данные, найденные в другом списке, и получить последние 6 идентификаторов через LINQ без цикла foreach - PullRequest
0 голосов
/ 03 января 2019

У меня есть две таблицы User и Income.Я выбираю usersId из Income table, например:

var SelectedId= 
  objdb.Incomes.Where(x => x.NewUserId ==model.UserId).Select(x=>x.UserId).ToList();

, теперь я хочу выбрать последние 6 UserId из User, которые не содержат SelectedId Я знаю, что могу выбрать шесть UserId, как

objdb.Users.Select(x=> x.UserId).Take(6).ToList();

Но я хочу только те data, которых нет в selected ID.

1 Ответ

0 голосов
/ 03 января 2019

Используйте предложение Where с x => !SelectedId.Contains(x.UserId) в качестве предиката.

objdb.Users.Where(x => !SelectedId.Contains(x.UserId))
           .Select(x=> x.UserId)
           .Take(6)
           .ToList();

читается как "получить первые 6 идентификаторов пользователя из Users, где идентификатор пользователя не содержится в SelectedId 's и собрать в список ".

Если вы хотите последний 6 на основе некоторых критериев, тогда используйте OrderByDescending:

objdb.Users.Where(x => !SelectedId.Contains(x.UserId))
           .OrderByDescending(x => x.[property])
           .Select(x => x.UserId)
           .Take(6)
           .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...