У меня возникла следующая проблема: Я хочу загрузить один Список, но могу передать несколько параметров, какими могут быть критерии для поиска списков, которые я хочу. Теперь у меня есть следующая структура:C# linq с двумя списками
House{
Name;
ID;
Alias;
}
Также я:
Person{
Name;
Alias;
}
Это означает, что 1 дом может содержать несколько лиц и несколько человек с таким же именем может быть в нескольких домах. Итак, теперь я хочу назвать свою функцию e.G. «GetHouses (критерии строка)» в качестве критериев могут быть:
- имя дома
- идентификатор дома
- часть имени дома
- имя одного из Лица в доме
Теперь я просто прочитал каждый дом и его данные, и потом я выбираю критерии.
ВАЖНОЕ ПРИМЕЧАНИЕ: Я не могу изменить логику, пока здесь!
Итак, теперь, когда я пытаюсь найти подходящие критерии, я придумал использовать LINQ, поскольку он очень быстрый. Он работает до тех пор, пока я не сравнить с людьми:
result = (from x in result
where (
(string.Equals(x.Name, criteria))
|| (string.Equals(x.ID, criteria))
|| (x.Name.Contains(criteria))
select x).ToList();
Теперь я хочу, чтобы загрузить каждый человек в домах, которые я нашел и проверить, является ли имя лиц в доме будет соответствовать критериям. Есть ли способ сделать это в LINQ, который у меня уже есть? Или я должен идти, хотя результат с:
result.ForEach(x => ...)
Было бы хорошо, если он будет работать с LINQ. я сделал подобную логику с
result.FindAll(new Predicate<House>((x) => { ... LoadPersons(criteria) {... } }));
Но что взял долго.
С наилучшими пожеланиями, Asat0r
вы не просто пытались связывающими два элемента в LINQ ? а не foreach – BugFinder
Как дом связан с человеком? Вы хотите «загрузить» людей в соответствующие дома, которые имеют одинаковые критерии соответствия? Если да, то что, если один человек может соответствовать многим домам? –
Не должен ли класс дома содержать в нем список лиц? – OrMiz