首页 > 解决方案 > EF Core 3.0 Npgsql 是否有 Postgres 数组重叠 (&&) 运算符

问题描述

给定一个DBSet<Tasks>带有一列的tags text[]。EF Core Npgsql 中是否有一种方法可以使用 Postgres 重叠 (&&) 运算符查询与提供的标签列表相同的标签,例如

select * from tasks where tag && '{bug, feature}'

我找不到与此相关的任何内容,并且我想避免客户端评估。我想做类似的事情

var tags = new List<string> { "bug", "feature" };
var foo = _db.Tasks.Where(x => x.Tags && tags); // obviously this doesn't work

我也尝试了 linq contains 方法

var foo = _db.Tasks.Where(x => x.Tags.Any(x => tags.Contains(x)));

但收到无法翻译 linq 表达式的异常。

标签: postgresqlentity-framework-corenpgsql

解决方案


3.1 版添加了对数组重叠 (&&) 和包含 (@>) 的支持,应该很快就会发布(参见https://github.com/npgsql/efcore.pg/issues/1135)。

如果需要任何其他运算符但未翻译,请打开一个新问题。


推荐阅读