Мне нужно отфильтровать на основе отключенных объектов, вложенных в список объектов

#c# #asp.net-core #filter

Вопрос:

Таким образом, все мои другие фильтры работают правильно, поэтому я знаю, что это только для вложенных объектов. Но я не уверен, как к этому подойти. Итак, проще говоря, данные выглядят следующим образом (есть еще много столбцов, но это позволяет понять суть).:

[{Имя:»Том», Фамилия:»Смит», Сайты:[{Имя сайта:»Вашингтон»}, {Имя сайта:»Арканзас»}, {Имя:»Мэри», Фамилия:»Смит», Сайты:[{Имя сайта:»Вашингтон»}]

Сведения о сайте вложены в сведения о пользователях, это связано с тем, что пользователь может принадлежать многим сайтам. Мне нужно иметь возможность показывать всех клиентов, которые принадлежат определенному сайту. И если я фильтрую по имени или фамилии, это работает, но моя логика для имени сайта неверна.

{FilterOperation.Contains, (usersQuery) => { return usersQuery.Where(c => c.Sites.Any(s => s.SiteName.ToLower() == this.Value.ToLower())); } }

По какой-то причине данные не передаются внутри Любого для сравнения. Он ведет себя так, как будто Сайты пусты. Единственное, что у меня есть, — это то, что мне нужно создать отдельный фильтр для объектов сайта, который вызывается из этого фильтра??

Ответ №1:

Похоже, вы используете ядро ef для запросов пользователей, а сайты являются собственностью навигации для пользователя. Если это так, то это из-за функции ленивой загрузки в ef core, которую вам нужно добавить .Включить(пользователь=>пользователь.Сайты), когда формируется запрос на загрузку Сайтов в качестве дочерних.

Комментарии:

1. Большое вам спасибо!!! Это сделало свое дело. По какой-то причине я никогда не думал, что данных просто не было, лол!