Как сравнить 2 списка объектов и удалить элементы, которые не являются общими? - PullRequest
1 голос
/ 14 июля 2010

У меня есть 2 общих списка, которые не содержат все поля одного типа

IList<Category> and List<CategoriesRow>Categories

categoryList = IList<Category>

но оба имеют общие поля Имя и Идентификатор.

Я хочу сравнить список категорий с categoryList и найти те из categoryList, где categoryList [index] .ID не существует в списке всех категорий ID. Для всех тех, кто не существует в категориях, мне придется удалить их из CatgoryList.

У меня был предыдущий пост, в котором мне приводили примеры LINQ, но проблема в том, что я должен использовать Dynamic, подразумевая, что я передаю categoryList и Categories как Dynamic.

Может ли кто-нибудь дать мне пример того, как поступить выше, поскольку я понятия не имею, как это сделать.

Ответы [ 2 ]

4 голосов
/ 14 июля 2010

Используйте оператор .Except LINQ.

Например:

var uniqueList = list1.Except(list2);

Не уверен, что вы подразумеваете под "Я должен использовать динамический".

Этоявляется стандартной операцией LINQ, доступной для всех типов, которые реализуют IEnumerable.

Вот хорошая статья о том, как это сделать.

1 голос
/ 14 июля 2010

Допустим, у вас есть list1 и list2, например:

IList<Category> list1 = new List<Category>();
IList<CategoryRow> list2 = new List<CategoryRow>();
//populate lists here....

Теперь, чтобы выбрать из list1 только те элементы, которые соответствуют Id в list2, вымог бы сделать

list1 = list1.Where(c => list2.Exists(cr => cr.Id == c.Id)).ToList();

Надеюсь, что ответит на ваш вопрос

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