Linq将子整数列表与整数列表相交
我有一个用户列表,每个用户都包含一个相关店面ID的列表。我有一个单独的整数列表,我想找到用户的任何店面id与单独列表中的任何整数匹配的位置 我期待着这样的事情:Linq将子整数列表与整数列表相交,linq,linq-to-objects,Linq,Linq To Objects,我有一个用户列表,每个用户都包含一个相关店面ID的列表。我有一个单独的整数列表,我想找到用户的任何店面id与单独列表中的任何整数匹配的位置 我期待着这样的事情: clientUsers = clientUsers.Where(x => x.Storefronts.Intersect(allowedStorefrontIds)); 我被告知不能从Where扩展方法的用法推断类型参数 您知道在这种情况下应该如何构造linq吗?您只需要lambda中的.Any()来检查集合交集是否包含任何元素
clientUsers = clientUsers.Where(x => x.Storefronts.Intersect(allowedStorefrontIds));
我被告知不能从Where扩展方法的用法推断类型参数
您知道在这种情况下应该如何构造linq吗?您只需要lambda中的.Any()
来检查集合交集是否包含任何元素:
x => x.Storefronts.Intersect(allowedStorefrontIds).Any()
就个人而言,为了提高效率,我会这样做:
var allowedIds = new HashSet<int>(allowedStorefrontIds);
var allowedUsers = clientUsers.Where(x => x.StoreFronts.Any(allowedIds.Contains));
var allowedIds=新HashSet(allowedStorefrontIds);
var allowedUsers=clientUsers.Where(x=>x.StoreFronts.Any(allowedIds.Contains));
其中需要返回布尔表达式的函数。Intersect返回一个列表。我认为clientUsers.Intersect(AllowedStoreFrontId)
应该返回您期望的列表,除非代码段中没有提到另一个列表。我认为您的Where
子句中的lambda表达式必须计算为true,我不确定它在这里是否正确。+1,我没有读过问题,也没有读过你的答案,但我知道在林克,你总是对的:)@Saeed:谢谢,太好了。但事实并非如此