You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase-C#中Operator.Like未找到的原因及LIKE过滤替代方案

解决Supabase-C#中LIKE过滤编译错误的方案

问题原因

你遇到的Operator不存在的编译错误,是因为supabase-csharp依赖的postgrest-csharp库在版本迭代中,Operator枚举的命名空间或使用方式发生了变化,或是你的命名空间引用逻辑有误。

可行解决方案

方案1:使用Like扩展方法(推荐)

postgrest-csharp提供了专门的Like扩展方法,无需手动引用Operator枚举,代码更简洁直观:

public async Task<List<Album>> AlbumByTitle(SearchValue sv)
{
    // 注意添加通配符%,否则仅会匹配与搜索值完全一致的字符串
    var result = await supabase.From<Album>()
        .Like(x => x.Name, $"%{sv.ValueSearch}%")
        .Get();

    return result.Models;
}

方案2:直接传入字符串操作符

如果坚持使用Filter方法,可以直接传入字符串形式的操作符"like",替代Operator.Like:

public async Task<List<Album>> AlbumByTitle(SearchValue sv)
{
    var result = await supabase.From<Album>()
        .Filter(x => x.Name, "like", $"%{sv.ValueSearch}%")
        .Get();

    return result.Models;
}

方案3:确认Operator的正确命名空间

若一定要使用Operator枚举,确保引用正确的命名空间。针对最新版postgrest-csharp,Operator位于Postgrest.Constants命名空间,需在文件顶部添加:

using Postgrest.Constants;

之后修改代码为:

public async Task<List<Album>> AlbumByTitle(SearchValue sv)
{
    var result = await supabase.From<Album>()
        .Filter(x => x.Name, Operator.Like, $"%{sv.ValueSearch}%")
        .Get();

    return result.Models;
}

如果仍未识别,建议更新supabase-csharp到最新稳定版:

dotnet add package supabase-csharp --version latest

额外提示

使用LIKE查询时必须添加通配符:%用于匹配任意长度的字符,_用于匹配单个字符。比如%周杰伦%会匹配所有包含“周杰伦”的标题,周杰伦%会匹配以“周杰伦”开头的标题,无通配符则仅返回完全匹配的结果。

内容的提问来源于stack exchange,提问作者Ren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:08:27