获取嵌套实体的计数

sab*_*ber 11 c# linq entity-framework

我正试图在LINQ中查明特定州的员工数量.

我有这样的事情:

States
     |
     Cities
          |
          Posts
              |
              Employees
Run Code Online (Sandbox Code Playgroud)

如何Employees通过State手头选择计数?

我的实体是:

public class Province : EntityBase
{
    public String ProvinceName { get; set; }
    public virtual IList<City> Cities { get; set; }
}

public class City : EntityBase
{
    public String CityName { get; set; }

    public virtual Province Province { get; set; }
    public virtual IList<Post> ElectricPosts { get; set; }
}

public class Post : EntityBase
{
    public String PostName { get; set; }
    public virtual City City { get; set; }
    public virtual IList<Employee> Employees { get; set; }
}

public class Employee : Person
{
    public virtual String FirstName { get; set; }
    public virtual String SureName { get; set; }
    public virtual Post ElectricPost { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

编辑:有趣的是我可以得到Posts没有任何问题和异常的数量,但当我想尝试在@HamletHakobyan帖子我的方式NullReferenceException,我不知道为什么?

Ham*_*yan 11

我不确定但是试试这个:

var state = ((IObjectContextAdapter)context)
            .ObjectContext
            .CreateObjectSet<Province>("States") as ObjectQuery<Province>;
            // States is entitySetName

int count = state.Cities.Include("ElectricPosts.Employees")
                    .SelectMany(c => c.Posts)
                    .SelectMany(p => p.Employees)
                    .Count();
Run Code Online (Sandbox Code Playgroud)


Nic*_*ler 5

您可以为此使用 LINQ to EntitiesSumCount方法:

int count = db.States
  .Where( state => state.StateId == X )
  .Sum( state => state.Cities
    .Sum( city => city.Posts
      .Sum( post.Employees.Count() )
    )
  )
;
Run Code Online (Sandbox Code Playgroud)