我正在尝试从一个列中提取数据并对相同的数据应用筛选器。
如下面的屏幕截图所示,一个serviceId
可以有多个userRoleId
分配给它。0个或多个userRoleId
作为字符串值存储在一个列userRoleIds
中。当我选择一个或多个userRoleId
时,我试图编写一个lambda表达式来过滤信息。
假设我将用户id 1,4,11,9作为一个列表传递,那么它应该返回以下行:
你能分享代码片段,以实现这一点,在一个单一的查询没有重复的记录。谢谢提前。
尝试用SQL UDF实现逻辑。可以实现。但需要从LINQ lambda表达式中实现。
2条答案
按热度按时间p8h8hvxi1#
请尝试以下操作:
bgtovc5b2#
使用LINQKit,您可以创建帮助器,允许获取分隔字符串的可能成员的
List<T>
,并通过为类似v == term || v.StartsWith(term + delimiter) || v.EndsWith(delimiter + term) || v.Contains(delimiter + term + delimiter)
的每个术语添加 predicate ,以EF/EF Core兼容的方式搜索它。您也可以通过滚动您自己的
Expression
树助手来避免LINQKit。下面是我使用LINQKit依赖项的代码:
有了它,您可以执行以下操作: