2015-01-13 1 views
-9

У меня есть два спискаКак получить элементы из списка <classname> те, которые не в списке <int> с помощью LINQ

  1. List<ObjectData> и
  2. List<int>

Класс ObjectData содержит: - ID, Fname, LName

List<int> содержит идентификаторы.

Как получить товары от List<ObjectData> те не в List<int>.

List<int> lstPractitionerID = //get list 
    var lstfianl = lstPractitionerPC 
       .Select(a=>a.ID).ToList().Except(lstPractitionerID).ToList(); 

но это возвращение только ID, мне нужен весь класс данных объектов

+3

Что вы пробовали? Какие проблемы у вас есть с этими существующими реализациями? – Servy

ответ

6

вы можете использовать LINQ с лямбда-выражения:

List<ObjectData> objDat; 
List<int> integers; 

objDat.Where(o=>!integers.Contains(o.ID)); 
+2

Это было бы правильно, если имена методов начинались с верхнего регистра и выглядели бы лучше, если имена переменных начинались с нижнего регистра. Также 'o.ID' вместо просто' o'. – juharr

+0

Содержит кроме int, а не список ? – HaveNoDisplayName

+0

'o' в выражении лямбда представляет итератор на' objDat', поэтому вы проверяете каждый 'o', если он содержится в' integers' – Banana

2

Это должно получить, что вы хотите:

List<ObjectData> lObj = new List<ObjectData>();//Create your ObjectData List here 
List<int> lInt = new List<int>();//Create your int List here 
List<ObjectData> resultList = lObj.Where(o => !lInt.Contains(o.ID)).ToList(); 
+0

Почему это было приостановлено? –

+0

Вам также +1 !! – HaveNoDisplayName

+1

Если вам становится лучше, кто-то меня тоже отклонил xD, но ваш ответ хорош, вы получили мой верхний знак. – Banana

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