我想用EFCore创建一个SQL查询,如下所示。
FROM "Customers" AS c
where reverse("Phone") LIKE reverse('%#####');
ORDER BY 1
LIMIT @__p_2 OFFSET @__p_1
我正在尝试使用LINQ,但此代码不起作用,而且我在EF.Functions
中找不到反向方法
query = query.Where(c => c.Phone.Reverse().ToString() == $"{phone}%");
抛出错误
消息":"LINQ表达式'DbSet\r\n.Where(c=>c.Phone\r\n.Revrse((.ToString((==__Format_0('无法翻译。以可以通过插入调用AsEnumerable((、AsAsyncEnumerable((、ToList((或ToListAsync((。看见https://go.microsoft.com/fwlink/?linkid=2101038对于更多信息。
是否有任何方法可以使用实体框架核心的PostgreSQL/Npgsql提供程序创建反向函数查询。
不幸的是,在.NET中没有简单/惯用的方法来表示字符串反转;请注意,c.Phone.Reverse().ToString()
不会返回反转的电话,因为它会调用从Reverse返回的IEnumerable上的ToString。
我已经为即将发布的5.0版本添加了EF.Functions.Reve-请参阅https://github.com/npgsql/efcore.pg/pull/1496.