如何使用 LINQ Contains() 查找枚举列表?

2023-12-19

我有一个名为OrderStatus,它包含订单可以处于的各种状态:

  • Created
  • Pending
  • Waiting
  • Valid
  • Active
  • 处理
  • 完全的

我想要做的是创建一个 LINQ 语句,该语句将告诉我 OrderStaus 是否有效、活动、已处理或已完成。

现在我有类似的东西:

var status in Order.Status.WHERE(status => 
      status.OrderStatus == OrderStatus.Valid || 
      status.OrderStatus == OrderStatus.Active|| 
      status.OrderStatus == OrderStatus.Processed|| 
      status.OrderStatus == OrderStatus.Completed)

这确实有效,但是非常“啰嗦”。有没有办法将其转换为Contains()声明并缩短一点?


Sure:

var status in Order.Status.Where(status => new [] {
        OrderStatus.Valid, 
        OrderStatus.Active, 
        OrderStatus.Processed,
        OrderStatus.Completed
    }.Contains(status.OrderStatus));

您还可以定义一个扩展方法In()它将接受一个对象和一个 params 数组,并且基本上包装了 Contains 函数:

public static bool In<T>(this T theObject, params T[] collection)
{
    return collection.Contains(theObject);
}

这允许您以更类似于 SQL 的方式指定条件:

var status in Order.Status.Where(status => 
    status.OrderCode.In(
        OrderStatus.Valid, 
        OrderStatus.Active, 
        OrderStatus.Processed,
        OrderStatus.Completed));

了解并非所有 Linq 提供程序都喜欢在其 lambda 中自定义扩展方法。例如,NHibernate 在没有额外编码来扩展表达式解析器的情况下无法正确转换 In() 函数,但 Contains() 工作得很好。对于 Linq 2 对象,没有问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 LINQ Contains() 查找枚举列表? 的相关文章

  • 如何获取列表框中项目的索引?

    我正在将项目添加到ListBox像这样 myListBox Items addRange myObjectArray 我还想通过以下方式选择我添加的一些项目 foreach MyObject m in otherListOfMyObject
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • 如何在 Mac OS X 中获取 aio 信号处理程序的用户数据

    我尝试在 Mac OS X 下使用 aio 函数进行异步文件 IO 但在将某种形式的用户数据输入信号处理程序时遇到问题 这是设置操作的代码 class aio context public aio context int fildes bo
  • 将二进制文件内容读取到 std::string 的最佳方法是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将 istream 与字符串一起使用 https stackoverflow com questions 6510923 how to use istream with strings std i
  • 在 C# 中将 Exe 文件作为嵌入式资源运行

    我有一个第 3 方 EXE 我只需要从我的 C 应用程序运行它 我的主要目标是对我的 C 文件中的第 3 方可执行文件进行版权保护 有没有更好的方法来做到这一点 我怎样才能做到这一点 首先将嵌入的可执行文件作为资源文件添加到您现有的资源文件
  • 保存到会话状态的 DataTable 丢失事件处理程序

    我有一个来自强类型数据集的数据表 该数据集在 TableNewRow 事件上有一个事件处理程序 用于初始化一些日期字段 当我将此表保存到会话状态时 事件处理程序会正常触发 直到表被序列化 在后续请求中 当我从会话状态检索表时 事件处理程序不
  • 如何将值从控制器传递到asp.net中的视图?

    我正在开发一个应用程序 我需要将用户名的值从控制器传递到视图 我尝试了 ViewData 中给出的http msdn microsoft com en us library system web mvc viewdatadictionary
  • WebProxy 错误:需要代理身份验证

    我使用以下代码从互联网获取html数据 WebProxy p new WebProxy localproxyIP 8080 true p Credentials new NetworkCredential domain user passw
  • WCF Xml 与二进制序列化的优缺点

    我知道如果我将二进制序列化与 WCF 一起使用 我就会失去互操作性 如果我愿意接受这一点 我想知道使用二进制比 Xml 是否有效率优势 如果还有我上面没有提到的其他优点和缺点 是的 可能是一个大事件 XML 序列化数据比二进制数据要大 使用
  • 对于相同的数据库对象,实体框架对象引用是否相同

    如果我从不同位置查询 逻辑上 在数据库中 相同的对象 实体框架是否返回相同的对象引用 例如 我查询了名为 Joe Black 的客户 并假设现在我知道数据库中只有一个 Joe Black Customer c select blabla w
  • ASPNET MVC - 使用具有相同签名的新助手覆盖 Html.TextBoxFor(model.property)?

    我想用我自己的助手重写 Html TextBoxFor 该助手具有完全相同的签名 当然 但名称空间不同 这是否可能 如果可以 如何实现 原因是我在现有的应用程序中有 100 多个视图 并且我想更改 TextBoxFor 的行为 以便在属性具
  • 检查SQL Server数据库表中是否存在表或列

    在 SQL Server 数据库中创建列或表之前 我想检查所需的表和 或列是否存在 我已经四处搜寻 到目前为止发现了两种方法 我不想使用存储过程 通过使用SqlCommand ExecuteScalar 方法并捕获异常来确定表 列是否存在
  • JsonSerializer.Deserialize 失败

    考虑代码 using System using System Text Json public class Program public static void Main int id 9 string str id id var u Js
  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • C++中main函数可以调用自身吗?

    谁能告诉我下面的代码有什么问题吗 int main return main 我测试了一下 编译正确 它永远运行 幕后还有什么阴谋吗 TLDR 呼叫main导致未定义的行为 标准中使用的术语以及对程序员和编译器的影响似乎存在混淆 首先 单独的
  • 单击 GridView 查找选定行

    我正在尝试获取 GridView 并从单击的行中获取数据 我已经尝试了下面的代码 当我单击该行时 我会返回选定的索引 但是当我查看 GridView 中的实际行时 它们显示为空 不知道我错过了什么 ASP 使我的网格
  • C#无循环方式将字符串拆分为多维数组或锯齿状数组

    如何在不循环的情况下将字符串拆分为多维数组或锯齿状数组 我看到一个代码片段 其中有人使用文件流执行此操作 但我不知道如何使其适用于我的字符串 我的字符串类似于1 2 3 1 4 1并可以分为ID Qty 这是我看到的代码 string li
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求

随机推荐

  • 找不到存储过程,但可以执行它

    我是 SQL Server 新手 创建了我的第一个存储过程 它执行得很好 我可以在 可编程性 存储过程 下找到它 因此我弹出一个新查询并输入以下语句 use name of database exec name of stored proc
  • 如何对甘特条进行聚类而不重叠?

    使用 create gantt 我有重叠的开始日期和结束日期 import plotly plotly as py import plotly figure factory as ff import plotly df dict Task
  • 获取应用服务器下的真实(虚拟)主机名

    我有一个在 Jetty 下运行的应用程序 我希望该应用程序返回自引用绝对 URL 生成 RSS 提要时 因此客户端必须能够在没有 当前 URL 上下文的情况下工作 问题是我事先不知道应用程序将部署在哪个主机名下 而且很可能它将部署在多个主机
  • 通过 Powershell 为另一个用户设置环境变量

    我正在尝试从管理员用户 ABC 的 powershell 设置用户 XYZ 的环境变量 我正在使用 Start Process 启动用户 XYZ 的 powershell 但我无法捕获输出 所有这些过程都需要用Java来完成 有人可以帮我吗
  • 将对象实例添加到 gradle 插件扩展

    我有类似下面的插件 其中有一个外部命名空间 其中有一个 具体 实例 mother 一个对象加上另一个集合 children family mother firstname John lastname Cleese children son
  • Spring bean 的标准命名

    有人知道应用程序上下文中 Spring bean 的标准命名吗 我使用了驼峰命名法 但我不确定是否存在一种标准 我在网上搜索了相关内容 但没有找到任何东西 Bean 命名约定 Spring 框架参考第 1 3 1 节 https docs
  • 使用Excel作为Access数据库的前端(使用VBA)

    我正在为朋友构建一个小型应用程序 他们希望能够使用 Excel 作为前端 UI 基本上是 Excel 中的用户表单 他们在 Excel 中有一堆数据 他们希望能够查询这些数据 但我不想使用 Excel 作为数据库 因为我认为它不适合该目的
  • JBoss 6.4.20 补丁中允许使用哪些版本的 Jackson?

    我正在尝试更新我的 Jackson 版本6 4 20 JBoss补丁 https www redhat com archives rhsa announce 2018 May msg00028 html 我在用着org codehause
  • 匹配 bool 与 const void* 重载的函数的地址

    我正在阅读使用随机数生成器作为 C 中的函数出现意外值 https stackoverflow com questions 27225614 unexpected value using random number generator as
  • MTOM 是如何工作的?

    MTOM 是 W3C 消息传输优化机制 是一种高效地向 Web 服务发送二进制数据或从 Web 服务发送二进制数据的方法 它一般如何运作 这一切都始于 SOAP 的事实XML 当您发送文本以外的任何内容 例如图像 时 必须将其转换为 XML
  • Java 未经检查的操作转换为泛型

    我想知道为什么以下内容会发出有关不安全 未经检查的操作的警告 Map
  • 使用 Puppeteer 将鼠标悬停在 Node.js 中的元素上并获取计算样式?

    我想将鼠标悬停在某个元素上 比如说document getElementById abc 并找到它的悬停计算样式 我应该如何使用 Puppeteer 在 Node js 中执行此操作 您可以使用以下解决方案来迭代并将鼠标悬停在某些元素上以获
  • Unity 3d Sprite Shader(如何在多个灯光照射下将最大亮度限制为 1)

    我正在 Unity 中创建一个视频游戏 每个精灵都使用具有 CornucopiaShader shader 材质的精灵渲染器进行渲染 我遇到的问题是我想将精灵的最大亮度 或颜色 限制为精灵的正常图像 无论有多少点光源照射它的功率 灯光的强度
  • 为什么shared_ptr<>必须分别分配控制块和托管对象?

    这个链接的问题询问是否make shared lt gt 函数和shared ptr lt gt 构造函数不同 使用 make shared 时会发生什么 https stackoverflow com questions 24779929
  • Spring批处理聚合值并写入单个值

    我正在使用 spring Batch 我需要实现以下目标 读取包含日期和金额等详细信息的 csv 文件 汇总同一日期所有金额的总和 保留一项包含日期和总和的条目 我过去使用过批处理 我想到了以下方法 创建一个批次需要 2 个步骤 Step
  • devise Rails current_user 与 user_signed_in?

    我正在使用 Devise on Rails 4 1 我的问题是关于助手以及它们与会话的关系 current user 告诉您是否有可供该用户使用的用户会话 user signed in 告诉您用户是否已通过身份验证 我无法理解如果 user
  • WebClient.DownloadingString 更改请求的 URL

    如果我在浏览器中输入 URL 我的服务器会正 确响应 XML 虽然 如果这个相同的 URL 通过 WebClient DownloadingString 方法 URL 中的某些内容会发生变化 并且我的服务器会正 确响应 但会显示访问被拒绝消
  • 使用 basichttpbinding 调用 wcf webservice,无需 REST 或 JSON

    我有一个通过 wsHTTPBinding 和 basicHTTPBinding 公开的 wcf Web 服务 后者将其端点地址指定为 basic 如下所示
  • 使用 Web api 和 asp.net mvc 5 进行单点登录

    我希望将 SSO 与 Web api 2 2 结合使用 以便在多个应用程序中使用 包括移动和 asp net mvc 5 我了解了通过 Web api 创建身份验证令牌的基本想法 但我有几个问题 1 将身份验证令牌与用户名一起存储在 coo
  • 如何使用 LINQ Contains() 查找枚举列表?

    我有一个名为OrderStatus 它包含订单可以处于的各种状态 Created Pending Waiting Valid Active 处理 完全的 我想要做的是创建一个 LINQ 语句 该语句将告诉我 OrderStaus 是否有效