将动态过滤器与 Entity Framework Core 结合使用

2024-01-13

我正在开发一个使用 Entity Framework Core 的应用程序(.Net Core 3.1,C# 8)。

我想使用多个过滤选项来过滤表。

我获取 JSON 格式的过滤条件,并将其反序列化为一个对象。我想编写一个 where LINQ 查询,它将根据这些动态过滤选项来过滤表。

问题是我需要使用许多选项和组合来管理过滤。

  • 您可以过滤market, country, vendor其余的过滤器选项将是null.
  • 您想要过滤country and vendor那么marketnull以及其余的过滤器选项。

我正在查询一个巨大的表,因此编写一个完全转换为 SQL 的查询非常重要。

以下代码无法正常工作。我正在寻找类似的东西可以解决这个问题:

var filters = new demoFilterEntity()
{
      Market = new List<string>() { "LAT", "NAM" }
};

var filteredData = demoMainRepository.GetAll().Where(x =>
      x.Market != null && (filters.Market != null ? filters.Market.Contains(x.Market) : false) &&
      x.Country != null && (filters.Country != null ? filters.Country.Contains(x.Market) : false)).ToList();

我希望得到关于如何解决这个问题并动态管理过滤的建议。


如果你只有AND条件你可以通过链接来做到这一点Where条款:

var query = demoMainRepository.GetAll().Where(x => x.Market != null); 
if(filters.Market != null)
{
    query = query.Where(x => filters.Market.Contains(x.Market));
}
...
var filteredData = query.ToList();

Also as @拉约斯·阿帕德 https://stackoverflow.com/users/436560/lajos-arpad说也许你需要考虑组合字段空检查(即x.Market != null)与过滤器检查:

var query = demoMainRepository.GetAll(); 
if(filters.Market != null)
{
    query = query.Where(x =>  x.Market != null && filters.Market.Contains(x.Market));
}
...
var filteredData = query.ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将动态过滤器与 Entity Framework Core 结合使用 的相关文章

  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • ASP.NET - Crystal Report Viewer 打印按钮在 ASP.NET 中不起作用

    我正在使用 Visual Studio 2008 但我遇到了水晶报告问题 当我单击打印按钮时 它会将我带到弹出窗口 但未找到页面 弹出的网址是 http localhost aspnet client System Web 2 0 5072
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本

随机推荐

  • 通用发送电子邮件 html 或纯文本 php

    几天来 我一直在总结这样一个事实 我可以创建一个发送 HTML 邮件模板的脚本 如果用户的客户端无法读取 HTML 纯文本列表可能无法接收 HTML 电子邮件 请一些关于如何做到这一点的通用建议 我查遍了整个互联网 但我真的不知道 非常感谢
  • 输入类型=“文件”设置base64图像数据

    我有一个画布并在以下命令的帮助下从中检索图像数据canvas toDataURL image png Problem
  • 如何从配置文件中删除白色字符?

    我想使用python修改samba配置文件 这是我的代码 from ConfigParser import SafeConfigParser parser SafeConfigParser parser read etc samba smb
  • 环境变量在 Electron 中未定义,即使它已在 webpack.DefinePlugin 中设置

    我有一个要求 我们需要根据它是在生产环境还是在开发环境中执行来设置 dll 路径 因此 我决定将该值放入环境变量中 并尝试使用 webpack DefinePlugin 来实现 方法一 webpack config json plugins
  • 使 editText 提示变为斜体?

    你如何在 xml 中做到这一点 可以吗 我在 java 代码的相关问题中看到了这一点 检查长度为 0 并且 EditText setText Html fromHtml
  • Angular slickgrid 不显示在动态选项卡(ngx-bootstrap 选项卡集)内

    我正在使用 Angular Slickgrid 在选项卡内显示表格数据 我有一个 html 页面 其中两个选项卡是静态的 也正确显示数据 其他选项卡是从最后的专用选项卡动态创建的 这基本上是从输入构建查询 当您保存选项卡时 它将创建一个新选
  • 通过索引从 List 获取元素是否线程安全

    通过索引从 List 获取元素是线程安全的吗 var list new List
  • 推送到 webroot 之上的托管项目

    我有一个CakePHP应用程序托管于DreamHost 以及我的 MacBook 上的本地克隆 我正在尝试设置我的环境 以便我可以在 MacBook 上进行开发并根据需要推送到托管站点 但不知道如何设置git当远程文件在上面时从本地推送到远
  • 在 C++ 中查看 system() 调用的输出

    如何查看系统命令的输出 前任 int tmain int argc TCHAR argv system set PATH PATH C Program Files x86 myFolder bin system cd C thisfolde
  • Phoenix:如何服务单页应用程序

    我想将 Phoenix 设置为提供静态 index html 无论发送到它的路由是什么 无需更改 URL 同时提供对非 html 资源 js css jpg 的访问 因为我的 SPA 在 Elm 会查看路线并找出要做什么 基于this ht
  • 如何在CakePHP 2.0的控制器中导入类?

    我正在使用 CakePHP 我创建了一个外部类 它不是模型也不是控制器 类的结构如下所示 class UploadImage function sayHello return hahaha 我将该类保存在 App gt Lib 目录中 并将
  • 为什么指令 ng-href 需要 {{}} 而其他指令不需要?

    我只是想知道为什么我需要为 ng href 添加双大括号 而其他一些指令不需要它们 a link a 请注意ng href需要大括号同时ng if没有 我不太确定你的问题 但我认为您想知道为什么角度指令中有不同的语法样式 首先 请大家看一下
  • MongoDB {aggregation $match} 与 {find} 速度

    我有一个包含数百万行的 mongoDB 集合 我正在尝试优化我的查询 我目前正在使用聚合框架来检索数据并根据需要对它们进行分组 我典型的聚合查询类似于 match gt group gt group gt project 然而 我注意到最后
  • Azure Active Directory JWT 公钥更改

    Azure AD 随机更改 JWT 公共令牌而不发出警告 我可以完全关闭该功能吗 我希望公钥永远不会改变 Azure AD 签名密钥会定期轮换 有时也会立即轮换 请查看相关的微软指南 Azure Active Directory 中的签名密
  • 让 Activity 只是一个弹出窗口

    我目前正在制作一个程序 该程序应该提示用户选择要连接的某个蓝牙设备 我通过选项菜单在我的代码中设置了它 我希望它看起来像 BlueTerm 的弹出窗口 我实际上有 BlueTerm 的代码 因为它可以免费查看 但我不知道如何使窗口显示为弹出
  • 为什么 Laravel 中有 2 个 APP Key? .env 和 config/app.php

    我通过 Composer 安装了 Laravel 5 安装后自动生成了 App Key 我去了 env文件 我可以在那里看到 APP KEY 不过 我也注意到里面还有另一个APP KEYconfig app php像这样 key gt en
  • 在 Windows 服务中使用的最佳计时器

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我需要创建一些 Windows 服务 它将每 N 时间段执行一次 问题是 我应该使用哪个计时器
  • 在 Eigen3 中实现 Bartels–Stewart 算法?

    过去当我需要解西尔维斯特方程时AX XB C 我用过scipy的函数 solve sylvester 1 它显然是通过使用 Bartels Stewart 算法将事物转化为上三角形式 然后使用lapack 我现在需要使用以下方法求解方程ei
  • 从代码隐藏中删除 asp.net 控件

    当验证特定条件时 我需要从页面中删除控件 文本框 是否可以从代码隐藏中执行 或者我需要使用 JavaScript NOTE我需要删除控件 而不是隐藏 Use Controls Remove http msdn microsoft com e
  • 将动态过滤器与 Entity Framework Core 结合使用

    我正在开发一个使用 Entity Framework Core 的应用程序 Net Core 3 1 C 8 我想使用多个过滤选项来过滤表 我获取 JSON 格式的过滤条件 并将其反序列化为一个对象 我想编写一个 where LINQ 查询