В настоящее время я работаю с LINQ и обычным объектом, и, честно говоря, я немного застрял. У меня есть пользовательский класс, который представляет человека. Это выглядит следующим образом:Как я могу отфильтровать один список по отношению к другому списку?
private class Person
{
private String Name;
private String Firstname;
}
Теперь представьте себе следующую ситуацию: У меня есть два массива Person
(Person1
и Person2
). Я хочу получить список тех, которые имеют одинаковый (в списке 2) имя, но не существует в списке 1 (для других свойств).
Пример:
List<Person> Person1=new List<Person>(){new Person(){Name="Marley", Firstname="Bob"},
new Person(){Name="Smith", Firstname="David"},
new Person(){Name="Smith", Firstname="Thomas"},
new Person(){Name="Flint", Firstname="John"}};
List<Person> Person2=new List<Person>(){new Person(){Name="Marley", Firstname="Bob"},
new Person(){Name="Smith", Firstname="David"},
new Person(){Name="Smith", Firstname="Thomas"},
new Person(){Name="Smith", Firstname="Sandy"},
new Person(){Name="Smith", Firstname="Catherine"},
new Person(){Name="Flint", Firstname="John"},
new Person(){Name="Simons", Firstname="Paul"},
new Person(){Name="Flint", Firstname="Rachel"}};
В SQL запрос будет выглядеть следующим образом:
SELECT * FROM Person1
WHERE Person1.NAME IN (SELECT Person2.Name FROM Person2
WHERE Person2.Name=Person1.Name
AND Person1.Firstname<>Person2.Firstname)
Результат будет Сэнди/Кэтрин Смит и Рэйчел Флинт (НЕ Paul Simons)
Как Могу ли я сделать это в Linq?
Что вы пытались сделать до сих пор? Какие у вас проблемы с вашими попытками? Какое исследование вы сделали, чтобы выполнить эти операции в LINQ и каким образом они не смогли решить вашу проблему? – Servy
Добро пожаловать в переполнение стека! Чтобы получить наилучшую помощь здесь, вам нужно добавить в вопрос, что вы протестировали, и как это не удается. –