将匹配多个批量输入的 LINQ 表达式 [重复]

2023-11-29

如何编写匹配多个批量输入的 LINQ 表达式?

这是我的数据库表

Members
Division, Department
1           3
4           9       *
5           1
6           3       *
9           2

我想选择标有 * 的成员

这是我的输入

int[] divisions = new int[2] {4, 6};
int[] department = new int[2] {9, 3};

这是我尝试过的查询

var selectedMembers = members.Where(member => divisions.Contains(member.Division) && department.Contains(member.Department)).ToArray();

这在 EF 中行为不正确。它适用于单个输入但不适用于两个输入(部门和部门) 它应该返回输入中匹配的对 例如:

Member[] selectedMembers = new Member[2] { new Member{Division=4,Department=9}, new Member{Division=6,Department=3}};

EF 不直接支持此类过滤。

一种可能的解决方案是动态构建一个谓词,如下所示:

member => (member.Division == divisions[0] && member.Department == departments[0])
       || (member.Division == divisions[1] && member.Department == departments[1])
       ...
       || (member.Division == divisions[N-1] && member.Department == departments[N-1]);

您可以按照以下方法执行此操作:

var parameter = Expression.Parameter(typeof(Member), "member");
var predicate = Expression.Lambda<Func<Member, bool>>(
    Enumerable.Range(0, divisions.Length)
    .Select(i => new Expression[]
    {
        Expression.Equal(Expression.Property(parameter, "Division"), Expression.Constant(divisions[i])),
        Expression.Equal(Expression.Property(parameter, "Department"), Expression.Constant(departments[i])),
    }
    .Aggregate(Expression.AndAlso))
    .Aggregate(Expression.OrElse),
    parameter);
var query = members.Where(predicate);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将匹配多个批量输入的 LINQ 表达式 [重复] 的相关文章

  • 创建文件并使用内存流保存到其中

    如何创建文件并使用内存流写入文件 我需要使用内存流来防止其他线程尝试访问该文件 我试图保存到文件的数据是 html 如何才能做到这一点 假设您的意思是如何将文件的内容复制到内存流 如果您使用的是框架4 var memoryStream ne
  • 进入嵌入式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 合并多边形的高效算法

    我有一个多边形列表 在这个列表中 一些多边形重叠 或者接触其他多边形 我的任务是合并所有相互重叠或接触的多边形 我有一个union执行此操作的方法 做到这一点最有效的方法是什么 我目前能想到的是循环遍历多边形列表 检查合并列表以查看该多边形
  • C++ 中的反向迭代器和负跨步迭代器,在开始之前使用一个作为哨兵

    In 查看 C 反向迭代器的另一种方式 https devblogs microsoft com oldnewthing 20211112 00 p 105908雷蒙德 陈写道 C 语言的一个怪癖 你可以拥有一个指针 集合的 已过终点 但不
  • 有没有办法使用 ews c# 确定电子邮件是否是回复/响应?

    我正在编写一个支持系统 这是我第一次使用 EWS 到目前为止 我已经相当成功了 我可以提取我需要的信息 发送电子邮件 一切正常 我确实有点头疼 有没有办法判断电子邮件是否实际上是回复 该应用程序的基本思想是有人发送电子邮件 我们回复并给他们
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • ASP.NET MVC 数据注释属性 Range 从另一个属性值设置

    您好 我的 Asp net MVc 模型中有以下内容 测试模型 cs public class TestModel public double OpeningAmount get set Required ErrorMessage Requ
  • Image.FromStream() 方法返回 Invalid Argument 异常

    我正在从智能相机成像器捕获图像 并通过套接字编程从相机接收字节数组 NET 应用程序是客户端 相机是服务器 问题是我在运行时收到 System InvalidArgument 异常 private Image byteArrayToImag
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • Makefile:如何正确包含头文件及其目录?

    我有以下 makefile CC g INC DIR StdCUtil CFLAGS c Wall I INC DIR DEPS split h all Lock o DBC o Trace o o cpp DEPS CC o lt CFL
  • 使用 itextSharp 5.3.3 对 Pdf 文档进行数字签名和验证

    我正在尝试使用 iTextSharp 5 3 3 在服务器 c 上进行数字签名和验证 pdf 文档 我使用 DigiSign 在线工具 生成了 Pfx 文件 然后使用 Windows 生成证书 cer 文件
  • 如何声明返回相同类型的 Func Delegate 的 Func Delegate?

    我想编写一个方法 该方法可以完成一些工作 并最终返回另一个与原始方法具有相同签名的方法 这个想法是根据前一个字节值顺序处理字节流 而不进行递归 通过这样调用它 MyDelegate executeMethod handleFirstByte
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • ld: 无法对非 PE 输出文件执行 PE 操作错误

    我是操作系统编程的新手 我正在读一本书 其中给出了一个简单的内核示例 如下所示 main char video memory 0xb8000 video memory X 为了编译这个名为 kernel c 的文件 我在 Windows 7
  • 在 Windows 上构建 MLT 框架时出错

    我一直在遵循官方提供的构建指南here http www mltframework org bin view MLT WindowsBuild 我需要 MLT 来创建视频播放器 并且我选择仅安装前 4 个库 如指南中所述 FFmpeg SD
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act

随机推荐

  • 无法进入已加载符号的 Nuget 库

    我已将 Nuget 库上传到 Azure Devops Artifacts 中 它还将符号文件 PDB 发布到 Azure Devops 符号服务器 我在 Visual Studio 中添加了设置 以便按照上述说明从 Azure Devop
  • 在Delphi XE中使用UIDocumentInteractionController

    我有一个 Delphi XE5 应用程序 可以在设备上本地下载和存储 PDF 我在表单上有一个 TWebBrowser 来查看 PDF 它工作得很好 我现在希望与其他应用程序 例如 Safari Mail 等 共享 PDF 但我真的很挣扎
  • xUnit.net:全局设置+拆卸?

    这个问题是关于单元测试框架的xUnit net 我需要在执行任何测试之前运行一些代码 并在所有测试完成后运行一些代码 我认为应该有某种属性或标记接口来指示全局初始化和终止代码 但找不到它们 或者 如果我以编程方式调用 xUnit 我也可以使
  • 将 HTML 选择存储到变量中/在 Google 表格中使用该数据

    我几乎已经有了一个 HTML 表单选择器 它根据 google 表格列中的数据创建一个数组 完成 并将该数据填充到下拉框中 完成 我整个周末一直在尝试弄清楚如何捕获下拉选项的选择 然后将其合并到一个变量中 这是我的启动 HTML 弹出窗口的
  • 将图例宽度设置为 100% 绘图宽度

    无论实际尺寸如何 如何将图例高度或宽度设置为绘图高度 宽度的 100 library ggplot2 ggplot iris aes Petal Width Sepal Width color Petal Length geom point
  • jquery加载函数问题

    我正在尝试使用 jquery 加载函数在按下按钮时将转换为 DAE 文件的 3D 模型加载到目标 div 中 然而 当按下按钮时 屏幕上会出现与文件相关的大量数字 而不是模型 这是问题的屏幕截图 如果不可能做到这一点 我还想知道是否可以使用
  • Java 字符串连接

    我的 java 代码有问题 我昨天问了同样的问题 我得到了答复 但很抱歉这是我的错 我的问题不清楚 我的代码如下所示 for i 0 i lt geo getTargets length i if geo getTargets i getT
  • 如何以编程方式打开受密码保护的 PDF 文件?

    Adobe IFilter 不提供提供密码来打开受密码保护的 PDF 文件的机制 因此它不能用于打开受密码保护的文件 我想知道 是否有一种相对简单的方法来以编程方式检索 PDF 文件中的实际加密数据 使用标准加密 API 对其进行解密 然后
  • 如何在图形和子图周围添加边框或框架

    我想创建这样的图像 但我无法将各个图放入框架内 图形和坐标轴都有一个 patch 属性 它是构成背景的矩形 因此 设置图形框架非常简单 import matplotlib pyplot as plt fig axes plt subplot
  • jQuery 和 AJAX 登录表单

    我正忙于开发一个网站 右上角有一个登录框 我希望用户能够在同一页面上登录 而无需刷新 好的 我已经完成了该部分的工作 但我仍然在登录后过程中苦苦挣扎 我的外观如下 HTML li class login li PHP session sta
  • 使用jquery动态改变背景颜色

    现在我的页面的一部分有一个对象列表 当您将鼠标悬停在它们上方时 背景会变成浅黄色 并在鼠标移开时恢复为白色 我希望其中一个对象在满足条件时变成绿色背景 如果不满足则恢复正常 我遇到这种情况有一个问题 如果满足条件 它会改变颜色 如果不满足
  • 如何避免在 Excel 文件下载过程中出现 Response.End()“Thread was being aborted”异常

    我尝试将数据集转换为 Excel 并下载该 Excel 我得到了所需的 Excel 文件 但是每次 Excel 下载都会引发 System Threading ThreadAbortException 如何解决这个问题 请帮我 我在我的 a
  • 手机上测试Admob时DEVICE_ID_EMULATOR和TEST_EMULATOR的区别

    使用 TEST EMULATOR 和 DEVICE ID EMULATOR 有什么区别 我想在我的手机上测试admob广告系统 NOT在 PC 上的模拟器上 AdRequest ad new AdRequest Builder addTes
  • 如何更改进度条的颜色

    我想改变颜色最后更新文本 默认情况下它是黑色的 有没有办法引入一些代码来改变我为栏文本所做的文本颜色 帮我介绍一下缺少的代码 div span 2 span div div div Last updated 7 01 2013 progre
  • 从另一个 php 文件调用未定义的函数

    好吧 这就是我的代码的样子 索引 php require once WebsiteRoot include testfile php TestFunction include testfile php function TestFuncti
  • QLPreviewController 视图

    我只是想访问 QLPreviewController view 事实上 我想捕获其视图上的点击事件以显示 隐藏工具栏等 我正在尝试 QLPreviewController qlpc QLPreviewController new qlpc
  • 如何进行通用订单[重复]

    这个问题在这里已经有答案了 我有一个数据库作为数据框 我想对所有列进行排序 但保持元素之间的关系 例如 如果我执行以下操作 gt DF A B C D 1 11 2 432 4 2 11 3 432 4 3 13 4 241 5 4 42
  • 使用 mongoose model.find() 获取仅 1 个字段的所有条目

    我尝试使用 model find 的不同变体 但没有一个能达到我想要的效果 下面的代码是我正在使用的代码 但它显示每个字段 而我只想要 iframe 字段 app get api videos function req res Video
  • 如何将选择值存储到 php 变量中

    我有一个简单的下拉选择菜单 div div
  • 将匹配多个批量输入的 LINQ 表达式 [重复]

    这个问题在这里已经有答案了 如何编写匹配多个批量输入的 LINQ 表达式 这是我的数据库表 Members Division Department 1 3 4 9 5 1 6 3 9 2 我想选择标有 的成员 这是我的输入 int divi