将动态过滤器与 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 结合使用 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 将所有依赖项从 .Net Standard 库复制到 .Net Framework 控制台应用程序

    在 net Framework 4 6 控制台应用程序中使用 net 标准项目后 net 标准项目的依赖项不会复制到输出目录中 这会导致缺少 dll 的运行时错误 对于引用的项目 复制本地 属性已经成立 一种可能的解决方案是在控制台应用程序
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 通用发送电子邮件 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 查询