给出以下结构:一个人有功能。每个职能都有角色。每个角色都有功能。现在我想用linq来判断一个给定的人是否具有某个特征,但我对这个查询做错了。因此,我总是得到函数的计数(但我想得到功能的计数):
var count = person.Functions
.Select(fu => fu.Roles
.Select(r => r.Features
.Where(f => f.FeatureId == 99999)))
.Count();
我在这里做错了什么?根据这个查询,我希望0(没有得到这个特征)或者1。
答案 0 :(得分:3)
var query = from function in person.Functions
from role in function.Roles
from feature in role.Features
where feature.FeatureId == 99999
select feature;
var count = query.Count();
或
var count = person.Functions
.SelectMany(function => function.Roles)
.SelectMany(role => role.Features)
.Count(feature => feature.FeatureId == 99999);
答案 1 :(得分:1)
var count = person.Functions
.SelectMany(p => p.Roles)
.SelectMany(r => r.Features)
.Where(f => f.FeatureId == 99999)
.Count();
我不太确定,但我认为你想要给出Id的功能总数。您可能想要使用SelectMany。