У меня есть сценарий, в котором мне нужно выполнить фильтрацию по дочернему элементу list<object>
ResponseIssues , который включен в родительский элемент Вопрос , который также является list<object>
. Для этого примера у меня есть 10 вопросов, которые я собираю из таблицы, которые мне всегда нужно будет проверять независимо от того, существуют ли ResponseIssues.
Похоже, есть несколько проблем с моим запросом. Первая проблема заключается в том, что число Вопросов изменяется от 10 до 1, поскольку в настоящее время у меня только один вопрос, связанный с ResponseIssues . Мне нужны все вопросы, чтобы вернуться.
Вторая проблема заключается в том, что когда я смотрю поближе на ResponseIssues child list<object>
. Хотя я вижу записи, связанные с этим вопросом, он не отфильтровывает строки по SuveryPeriod и RespondentByQuarterId . Я ожидаю одну строку, и я получаю три строки, где две строки, где в предыдущем периоде. Та же проблема возникает с дочерним списком ответов.
Вот мой текущий код ниже. Любые идеи о том, как реструктурировать запрос, если он учитывает вышеуказанные проблемы и возвращает объект «Вопросы», а не что-то анонимное?
var question = await _dbContext.Questions
.Include(x => x.Responses)
.Include(x => x.ResponseIssues)
.Include(x => x.SurveySection)
.Include(x => x.Survey)
.Where(x => x.SurveyId == surveyId &&
x.Responses.Any(r => r.SiteUserId == siteUserId &&
r.SurveyPeriodId == surveyPeriodId &&
r.RespondentByQuarterId == 2
) &&
x.ResponseIssues.Any(ri => ri.SurveyPeriodId == surveyPeriodId &&
ri.RespondentByQuarterId == 2
))
.OrderBy(x => x.Position)
.ToListAsync();