0

我需要有关Npgsql字符串数组的queryableExtension的帮助。

我在数据库中有列类型为Text[]。这包含多个值,我想在它们中搜索,但不是使用 AND,而是使用 OR。

我有查询扩展,它工作正常,在整个字符串数组中搜索,但都是平等的。

public static IQueryable<T> ContainsOfStringArray<T>(this IQueryable<T> source,
    PropertyInfo property, string[] values)
{
     source = source.Where(_ => values.All(v => EF.Property<string[]>(_, property.Name).Contains(v)));

     return source;
}

我有数据

record 1 - string[] { AAA, BBB }
record 2 - string[] { AAA }

如果我传递一个参数AAA则返回 2 条记录。如果BBB返回 1 条记录。

但是如果我传递两个参数AAA,BBB然后返回 0 条记录。

我的问题是“我如何添加 Or 而不是 And?如果可能的话”。

我尝试编写自定义Expression.Call但没有成功。我不知道如何从 Npgsql 调用 Contains 函数进行正确翻译,因为 string[] 不包含 Contains 函数:(

如果您知道如何为谓词编写 Expression.Call,那就太好了。

使用 Asp.Net Core 3.1

非常需要帮助




--- 编辑关闭----

将All()更改为Any()做正确的工作。感谢@IvanStoev 评论

4

0 回答 0