У меня есть 2 Списка различных объектов, например, Список и Список.Я хочу удалить все объекты в первом списке, чье значение поля не соответствует значению поля во втором списке. Например, я хочу удалить все объекты Type1 из первого списка, чье Type1.name (строка) элемент не соответствует элементу Type2.id (строка) во втором списке. Возможно ли это с LINQ?
LINQ - это не изменение существующих коллекций, а выполнение запросов. Если вам нужно изменить список на месте, вы можете захотеть что-то вроде:
HashSet<string> ids = new HashSet<string>(list2.Select(x => x.Id)); list1.RemoveAll(x => !ids.Contains(x.Name));
В «нормальном» LINQ вы можете сделать это с помощью:
// I'm assuming no duplicate IDs in list2 var query = (from x in list1 join y in list2 on x.Name equals y.Id select x).ToList();
Вы также можете использовать лямбду:
var query = (list1.Join(list2, x => x.Name, y => y.Id, (x, y) => x)).ToList();
или
var query = (Enumerable.Join(list1, list2, x => x.Name, y => y.Id, (x, y) => x)).ToList();