如何在 LINQ 中使用 whereif

2023-11-22

大家好,有人可以帮助我如何在 LINQ 中最好地使用 whereif

IQueryable<Employee> empQuery;
     if (empId  == "")
     {
         empQuery = dbContext.Emps
           .Include(x => x.Name)
           .Include(x => x.Code)
           .Where(x => x.Id == empId);
     }
     else
     {
        empQuery = dbContext.Emps
           .Include(x => x.Name)
           .Include(x => x.Code);
     }

我认为我们可以通过使用 whereif 使这个查询变得非常简单,对吧?有人可以帮助我如何使用 whereif 使这个查询变得简单吗?而不是检查 if (empid == "") ?

是否可以?


我认为“whereif”应该是这个扩展方法。你不能使用它,因为它运行在IEnumerable<T>而不是在IQueryable<T>。结果是您将从数据库请求完整的员工表,并在应用程序的内存中执行过滤。那不是你想要的。但是,您可以使用条件运算符来实现此目的:

var empQuery = dbContext.Emps
                        .Include(x => x.Name)
                        .Include(x => x.Code)
                        .Where(x => empId == "" ? true : x.Id == empId);

请注意,这假设您的实际意思是if(empId != "")在您的示例代码中。如果您不是这个意思,请交换第二个和第三个操作数:

.Where(x => empId == "" ? x.Id == empId : true);

话虽如此,您当然可以为以下内容创建相同的扩展方法IQueryable<T>。看起来几乎一样,只是有IEnumerable<T>替换为IQueryable<T>并且谓词更改为表达式:

public static IQueryable<TSource> WhereIf<TSource>(
    this IQueryable<TSource> source,
    bool condition,
    Expression<Func<TSource, bool>> predicate)
{
    if (condition)
        return source.Where(predicate);
    else
        return source;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 LINQ 中使用 whereif 的相关文章

  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • 何时使用 if/endif 与 If{}?

    嗯 这个问题是不言自明的 在 PHP 中我什么时候使用if endif符号而不是标准if something 符号 Example A is equal to 5 Versus A is equal to 5 其他人给出了 用于模板 的答案
  • Linq 表达式将 DataTable 转换为 > 的字典

    我正在尝试转换以下形式的数据表 Key Value 1 A 1 B 1 C 2 X 2 Y 到字典 1 A B C 2 X Y 我使用的 lambda 表达式是 GetTable sql AsEnumerable Select r gt n
  • 如何检查深层 lambda 表达式中的 null 值? [复制]

    这个问题在这里已经有答案了 如何检查深层 lambda 表达式中的 null 值 举例来说 我有一个嵌套了几层的类结构 我想执行以下 lambda x gt x Two Three Four Foo 我希望它在 二 三 或 四 为 null
  • 展平可能包含数组的对象数组

    我有一个IEnumerable其中可能包含也可能不包含一些嵌套集合 例如 我的出发点可能是这样的 foo 2 1 2 3 4 bar 我想将其压平为 foo 2 1 2 3 4 bar 我在想一个SelectMany应该在这里工作 但无法找
  • System.Linq.Dynamic 不支持 OrderByDescending("someColumn")?

    好的 在我们的项目中 我使用 System Linq Dynamic 库 但我刚刚注意到我无法执行以下操作 myDataSource OrderByDescending someColumnName 因为我收到以下错误 重载解析失败 因为无
  • 当我们使用赋值而不是比较时,如何评估 if/while 条件?

    我在学习 Java 的 OCA OCP 时发现了这个令人惊讶的事情 下面是第一段代码 其中 if 测试条件 部分 让我惊讶 public class BooleanIf public static void main String args
  • 如何在 C# 中从这个分层父子结构中查找任何项目

    如何从列表中查找任何项目 因为它是动态的 它可能位于列表的任何位置的父项或子项中 并且当子项计数为0时需要停止查找 下面是列表的模型和分层父子结构示例 例子 父级 gt 子级 gt 子级 gt 子级或父级 gt 子级 gt 子级 gt 子级
  • 用于在 JAGS 中定义分布的 if/else 语句

    在 JAGS 中 我想为参数 w i 定义泊松分布 如果另一个参数 e i 大于 0 该分布也会被截断 大于或等于 2 本质上我希望它代表 w i ifelse e i gt 0 dpois mu T 2 dpois mu 我尝试通过调整响
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • 如何在嵌套列表视图中编辑数据

    我使用列表视图来显示项目列表 并使用嵌套列表视图来显示每个项目的功能列表 父列表视图和子列表视图都需要能够进行插入 编辑和删除操作 它适用于父列表视图 但是 当我尝试编辑子项目时 编辑按钮不会将其带入编辑模式 您能建议我代码中缺少什么吗
  • 按字母顺序对列表进行排序

    我有以下课程 class Detail public Detail details new List
  • 二维数组的列求和

    我有一个IEnumerable
  • Pimp my LINQ:基于另一篇文章的学习练习

    我决定第一次尝试LINQ来尝试解决这个问题 https stackoverflow com questions 3447782 3447915 3447915 我第一次涉足 LINQ 的奇妙世界的结果如下 using System usin
  • 如何根据表名在 DbContext 中选择正确的 DbSet

    假设我有一个包含以下 DbSet 的 DbContext class Amimals DbContext public DbSet
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • 在 SVG 中设置悬停语句样式

    我正在计划一个基于这个 SVG 插图的网络 菜单 我的想法的原则 一个样式为活动的圆圈 一个样式为悬停的圆圈以及一个也需要设置样式的伴随笔画 https i stack imgur com H397o png 当我阅读 SVG 文件的规范时
  • OrderBy("it." + sort) -- LINQ to Entity 框架中的硬编码?

    我一直在尝试在应用程序中使用动态 LINQ to Entity 在运行时指定 OrderBy 属性 但是 当使用大多数文档中描述的代码时 var query context Customer OrderBy Name 我收到以下异常 Sys
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • 优化 LINQ 查询 - 如何缩短执行时间?

    我想知道是否有一个好的方法来优化我的 LINQ 查询 我正在使用类似于以下内容的 LINQ 查询从数据库检索数据 PKs is a list of integers var import context table Where x gt P

随机推荐

  • 使用scrapyd有什么优势?

    scrapy 文档说 Scrapy 附带一个名为 Scrapyd 的内置服务 它允许您部署 也称为上传 您的项目并使用 JSON Web 服务控制其蜘蛛 使用 scrapyd 在一致性方面有一些优势吗 Scrapyd 允许您通过方便的 We
  • 使 bash 中的命令超时,避免不必要的延迟

    这个答案 to 命令行命令在一定时间后自动终止命令 提出了一种 1 行方法来使 bash 命令行中长时间运行的命令超时 path to slow command with options sleep 5 kill 但给定的 长时间运行 命令
  • Django 表命名约定。我可以改变它的行为吗?

    当 Django 创建表时 它会为它们提供 app class 形式的名称 我正在为 Django 安装改造一个不同的 但内容基本相似 数据库 我的表名称没有以 app 开头 我可以相应地重新创建我的数据库及其表 但我想看看 Django
  • 页面退出时弹出框

    我想做的是在页面退出或导航离开时创建一个弹出框 现在我有 我有两个问题 仅当您实际离开页面 刷新 新 URL 等时 它才会显示该框 如果您退出选项卡或浏览器 则不会弹出该框 无论您按哪个按钮 它只会将您发送到
  • 在关联文件中更改新版本的版本号(文档)

    我很想知道你们是如何处理的修改版本号对于新版本问题 如何处理关联文件 例如手册页等 中的版本号 该软件是使用 gnu 工具链构建的 因此 autoconf automake 等可用并用于应用程序的版本号 这样信息就可以被重用 git 被用作
  • Rails 中处理无效表单提交的正确方法

    我是 Rails 新手 不确定我是否同意我在一些教程中完成的工作方式 该问题与如何处理无效的表单提交有关 标准的做事方式似乎是 class ThingsController lt ApplicationController POST thi
  • 如何从 bash shell 脚本中的一行中提取单词[重复]

    这个问题在这里已经有答案了 我想从 bash 脚本中的句子中提取一个单词 它使用逗号和空格作为分隔符 ex date crossed 122 name foo userid 234567 sessionid 2233445axdfg5209
  • AFNetworking 2.0 POST 问题,Cocoa 错误 3840(JSON 文本未以数组开头...)

    我正在尝试在本地服务器上调用 api php 使用 MAMP 正在调用服务器端 api php 但 php 代码中的 POST 内容包含以下错误 Error Domain NSCocoaErrorDomain Code 3840 The o
  • 实现自定义 MVC 基本视图页面

    我正在尝试实现 MVC 自定义基本视图页面以 覆盖 User财产种类 这将使我的CustomPrincipal在任何视图中均可访问的类型 在网上搜索后 我发现Phil Haack 关于实现自定义基本视图页面的说明 我完全按照说明进行操作 但
  • Unicode字符插入数据库后变成问号

    当我将一些用 Unicode 编写的文本插入数据库时 它们变成了问号 数据库编码设置为UTF 8 还有什么可能是不正确的 当我检查 phpMyAdmin 时 只插入了问号 这是我用于连接数据库的代码 define DB HOST local
  • 如何在 Python 中创建和导入自定义模块

    如何将以下函数保存在一个 python 文件中 然后在另一个文件中使用它 文件A中的函数 def basic x print x B文件中的声明 basic some string A 创建一个包含所有模块的文件夹 例如 让我们使用 MyM
  • HTML.fromHtml 换行符消失

    我从 EditText 框中获取 Spanned Text 并使用 HTML toHtml 将其转换为 HTML 标记字符串 这很好用 我已经验证该字符串是正确的并且包含 br 在适当的位置 但是 当我需要使用 HTML fromHtml
  • 如何将 sqlite3 模块与 Electron 一起使用?

    我想使用开发桌面应用程序electron使用通过 npm 使用命令安装的 sqlite3 包 npm install save sqlite3 但它在电子浏览器控制台中给出以下错误 Uncaught Error Cannot find mo
  • 选择 .Net 的图表库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一位客户需要将图表应用程序 很久以前是用 MFC 开发的 转换为 C 该应用程序显示大型网络 大量图形元素 并允许用户通过图形用户界面编辑 操作数据 我决定最好使用一个库 而不是
  • 如何将
    的箭头与 的内容垂直对齐

    我正在尝试垂直对齐附带的箭头
  • 改进猫鼬验证错误处理

    我有以下具有所需验证的架构 var mongoose require mongoose var validator require validator var userSchema new mongoose Schema email typ
  • Sharepoint CMS 与 UmbracoCMS

    我在一家大型地方政府组织工作 该组织即将开始使用 SharePoint 将我们老化的内部网替换为一个能歌善舞的协作网站 Intranet 的重点将是用 SharePoint 安装替换散布在整个组织中的随机文件 内容页面和文档 这将神奇地使所
  • 更改整个应用程序中的按钮样式

    我正在尝试将应用程序中按钮的所有 TextColor 更改为白色 并尝试将其设为粗体 但这并没有发生 我正在覆盖the android Widget Button我正在开发 Jelly Bean 4 1 2 我究竟做错了什么 清单中的主题定
  • 直接从 AlarmManager 唤醒服务

    In the https github com commonsguy cwac wakeful演示中 调用 OnAlarmReceiver 广播接收器 的 onReceive 方法来响应警报 onReceive 方法启动服务 使用了两种 I
  • 如何在 LINQ 中使用 whereif

    大家好 有人可以帮助我如何在 LINQ 中最好地使用 whereif IQueryable