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)
您可以为此使用 LINQ to EntitiesSum
和Count
方法:
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)