2008-09-01 1 views
15

У меня есть List<int> и List<customObject>. Класс customObject имеет свойство ID. Как я могу получить List<customObject>, содержащий только объекты, в которых свойство ID находится в List<int> с использованием LINQ?Фильтр linq список по стоимости недвижимости

Редактировать: Я принял ответ Konrads, потому что это проще/интуитивно понятным для чтения.

ответ

16
var result = from o in objList where intList.Contains(o.ID) select o 
+0

Не является ли более понятным метод Linq `.Where`? (см. мой ответ ниже) – 2013-11-07 13:24:58

6

непроверенная, но это будет что-то вроде этого:

var matches = from o in objList 
        join i in intList on o.ID equals i 
        select o; 

@Konrad просто проверял, и это делает работу - я только что опечатка, где я написал «i.id», а не "я".

2

Просто для полноты картины (и, возможно, это легче читать?), Используя «где» похож на Мэтта «присоединиться»:

var matches = from o in customObjectList 
       from i in intList 
       where o.ID == i 
       select o; 
10

У меня была аналогичная проблема, только сейчас и используется ниже решения. Если у вас уже есть список объектов, вы можете удалить все, не найденные в списке int, оставив только совпадения в objList.

objList.RemoveAll(x => !intList.Contains(x.id)); 
0

Обратите внимание, что использование соединения вместо него НЕ РАБОТАЕТ, когда количество элементов в списке превышает 49! Вы получите сообщение об ошибке: Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.

8
using System.Linq; 

objList.Where(x => intList.Contains(x.id)); 

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

  • Нет связанных вопросов^_^