Linq将整数的子列表与整数列表相交

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吗?

Ani*_*Ani 5

你只需要.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)