Я написал следующий запрос в Entity Framework, и его значения отличаются.
var query = from p in db.Parents
let children = p.Children
let grandchildren = children.SelectMany(c => c.Grandchildren)
select new
{
Count1 = children.Count(c => !c.Grandchildren.Any()),
Count2 = children.Count(c => !grandchildren.Any())
};
Свойство Count1 возвращает то, что я ожидаю, Count2 нет.
Я пытаюсь вернуть количество детей, у которых нет объектов внуков.Count2, похоже, возвращает 0 в этом случае, но Count1 возвращает 1 со следующим набором данных:
Parents
Id
------
1
Child
Id ParentId
--------------
1 1
2 1
внучат
Id ChildId
-------------
1 1
У меня двое детей, только у одного из них есть дети.Почему второй запрос не работает так, как я думаю?
Мои объекты выглядят следующим образом:
public class Parent {
public int Id { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child {
public int Id { get; set; }
public int ParentId { get; set; }
public virtual ICollection<Grandchild> Grandchildren { get; set; }
}
public class Grandchild {
public int Id { get; set; }
public int ChildId { get; set; }
}