我试图通过某个EventId计算不同的Assesors。
这是我尝试使用的代码:
var x = db.Assessors.Select(a => (a.Assessments.Select(y => y.EventFacility.EventId == 138))).Count();
不幸的是,我必须编码这个错误,因为我没有得到预期的结果(在这种情况下计数为9)我得到了错误的结果:35。
我想知道是否有人可以查看我的LINQ声明并告诉我我做错了什么?
答案 0 :(得分:2)
您需要使用Where
和Any
,如下所示:
var result = db.Assessors
.Where(a => a.Assessments.Any(y => y.EventFacility.EventId == 138));
这就是说,您希望所有评估者都是与该特定事件相关的任何评估的父母。
答案 1 :(得分:0)
你要向后看,从你所知道的事件开始(因为你有它的ID,所以你可以通过导航属性导航到你想要的东西。)
从模式中分辨出来是不可能的,因为它既不包含属性也不包含映射类型1:1? 1:N?无法从简单的线条中知道
它可能看起来像这样的东西
var x = db.Events
.Where(ev=>ev.Id == 138)
.SelectMany(ev=>ev.EventFacilities) //(i'm assumine possibly multiple and not 1 per event, once again schema doesn't show it, if it's not the case change SelectMany to Select)
.SelectMany(ef=>ef.Assesments) // Same assumption as above
.Select(as=>as.Assessor) // Asuming otherwise here, if wrong change Select to SelectMany
.Distinct(); // Ignore duplicate assessors
请注意,您的问题不可能回答,这是最好的努力,但如果您需要帮助,您应该提供所有必需的信息,而不是删除不会立即显示的相关信息,它会是如果你拍摄实体图的实际截图而不是你制作的截图,那就容易多了。