微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 LINQ 中过滤两个数组

如何解决在 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 举报,一经查实,本站将立刻删除。