big*_*7bb 2 linq linq-to-objects
我有一个用户列表,每个用户都包含一个关联的店面ID列表.我有一个单独的整数列表,我想找到用户的任何店面ID与单独列表中的任何整数匹配的位置.
我期待这样的事情:
clientUsers = clientUsers.Where(x => x.Storefronts.Intersect(allowedStorefrontIds));
Run Code Online (Sandbox Code Playgroud)
我被告知类型参数不能从Where扩展方法的用法推断出来.
在这种情况下,你知道我应该如何构建我的linq吗?
你只需要.Any()在lambda中检查set-intersection是否包含任何元素:
x => x.Storefronts.Intersect(allowedStorefrontIds).Any()
Run Code Online (Sandbox Code Playgroud)
就个人而言,我会做这样的事情以提高效率:
var allowedIds = new HashSet<int>(allowedStorefrontIds);
var allowedUsers = clientUsers.Where(x => x.StoreFronts.Any(allowedIds.Contains));
Run Code Online (Sandbox Code Playgroud)