如何解决在 LINQ 中过滤两个数组
List<string> userGroups;
userGroups 有这样的元素:
"Electronic"
"Mechanical"
"Computer"
IQueryable<UserRole> userRoles = Query(); //fetched from DB
userRoles 有这样的元素:
组名 | 别名 |
---|---|
电子、计算机、科学 | ELC |
机械、硬件 | MC |
现在我想要这样的功能:
如果“userGroup”中的任何元素与表的GroupName 匹配,我应该从表中选择该行。请注意,GroupName 包含逗号 分隔的值,需要根据 userGroup 元素进行检查。
如果 GroupName 不是逗号分隔值,则以下代码将起作用:
userRoles = userRoles.Where(r => userGroups.Contains(r.GroupName));
我想要这样的东西:
userRoles = userRoles.Where(r => userGroups.Intersect(r.GroupName.Split(",").ToList()).Any());
但不幸的是上面的代码不起作用!
我可以通过 foreach 实现此功能,但我不想在内存中进行操作,而是更喜欢延迟执行,最有可能使用 linq。
有什么建议吗?
解决方法
我认为这会做你想做的
userRoles = userRoles.Where(x => x.GroupName.Split(',').Any(userGroups.Contains));
它将保留所有那些 UserRole
,其 GroupName
至少包含 userGroups
中的一个元素。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。