(from u in content.Parents
where u.Children.Any(y = y.Age > 13)
select u);
Это похоже на ошибку.Если бы у Parent
был ребенок, которому было 14 лет, а у другого, которому было 9 лет, для IsTeenager
было бы установлено значение true.И наоборот, если бы у них был один ребенок, которому было 13 лет, у этого ребенка не было бы подростка, установленного в значение true.
Если возможно, я бы сделал IsTeenager
вычисляемым свойством, а не хранимым значением
public bool IsTeenager => Age >= 13 && Age <= 19
Тогда мне никогда не пришлось бы вызывать запрос вообще.
Если бы я не изменил запрос на
content.Parents.SelectMany(o => o.Children).Where(o => o.Age >= 13 && o.Age <= 19)
Возможно, я мог бы полностью пропустить косвенное обращение с подобнымииз.
content.Children.Where(o => o.Age >= 13 && o.Age <= 19)
В зависимости от структуры базы данных.Мне действительно нужно обращаться к родителям?
Если бы я не знал, что IsTeenager
всегда будет ложным при запуске запроса, я мог бы отфильтровать тех, кому он не нужен, с помощью:
content.Parents.SelectMany(o => o.Children).Where(o => !o.IsTeenager && o.Age >= 13 && o.Age <= 19)
или
content.Children.Where(o => !o.IsTeenager && o.Age >= 13 && o.Age <= 19)