c# - 如何将查询转换为另一个接口的查询以基于该接口添加约束
问题描述
我想在 C# EF Core(使用 .net core 3.0)中实现关键字搜索,这将进入我的查询构建管道。
if (!string.IsNullOrEmpty(searchKeyword) && query is IQueryable<IFullTextSearchable> queryFullTextSearchable)
{
return queryFullTextSearchable.Where(x => x.FullSearchText == searchKeyword).Cast<TGetOutput>();
}
但是在它经过这个和排序/分页之后,它会抛出一个错误,它不能翻译查询。我很好奇是否可以在数据库中评估这样的查询?如果是这样,怎么做?
解决方案
简短的回答,您可以使用 Dynamic Linq 来完成。从 Nuget 安装软件包System.Linq.Dynamic.Core -Version 1.0.19
,然后只需
return queryFullTextSearchable.Where($"FullSearchText == {searchKeyword}");
但是,不确定该检查query is IQueryable<IFullTextSearchable> queryFullTextSearchable
是否有效。如果您知道要执行查询的实体实际上是IFullTextSearchable
,则不需要该额外检查。
推荐阅读
- typescript - 使用 NX 将 typescript 代码编译成单个文件
- ansible - 在 Ansible 中读取 Windows 主机上的文件
- docker - luarocks install 返回一个非零代码:132(安装kong)
- javascript - 通过 JavaScript 向 Python 发送简单的 Ajax 请求
- apache - 从子网服务到互联网
- reactjs - 将单个 Switch 中的路由拆分为多个组件
- c# - EF Core 包含 Concat 字符串
- javascript - ServiceWorker 如何通过向所有订阅者推送来触发刷新/重新加载?
- postgresql - 如何从 PostgreSQL 的并发事务中从一个表的字段中获取最新的新 id
- javascript - 此代码在哪里返回鼠标位置值?