我有这样的多对多关系:
组织(组织ID,姓名)
类别(CategoryID,名称)
Organisations_Categories(OrganisationID,CategoryID)
我试图获取属于所有的组织列表作为参数传入的类别
e.g。如果10个组织属于CategoryID = 1,0个组织属于CategoryID = 2,并且我传入[1,2]作为CategoryID参数,则应返回0个组织,因为0个组织属于CategoryID = 1和CategoryID = 2
以下是目前的代码:
int[] catIdsSelected = ((catIds.Length > 0) ? Array.ConvertAll(catIds.Split(','), int.Parse) : new int[0]);
if (catIdsSelected.Length > 0)
{
orgs = orgs.Where(l => l.Categories.Any(m => catIdsSelected.AsQueryable().Contains(m.CategoryID)));
}
但是,这会返回属于传递的任何的组织列表
我已经尝试更换任何'与所有'没有成功
答案 0 :(得分:0)
你可以做一个小技巧:
if (catIdsSelected.Length > 0)
{
foreach (var id in carIdsSelected)
{
var localId = id;
orgs = orgs.Where(o => o.Categories.Any(cat => cat.CategoryId == localId));
}
}
它肯定会起作用,但我不确定EF提供程序生成的查询效率如何。