【发布时间】:2021-07-22 05:28:33
【问题描述】:
我有一个清单:
List<string> userGroups;
userGroups 有类似这样的元素:
"Electronic"
"Mechanical"
"Computer"
还有一个查询:
IQueryable<UserRole> userRoles = Query(); //fetched from DB
userRoles 有类似这样的元素:
| GroupName | AliasName |
|---|---|
| Electronic,Computer,Science | ELC |
| Mechanical,Hardware | 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。
有什么建议吗?
【问题讨论】:
-
Any(r => userGroups.Contains(r.GroupName)).Select() 可能对你有用。
标签: c# arrays list linq compare