具有多个 AND 条件的 DataTable 选择实现

2024-02-07

我正在使用一个包含大约 50,000 行的 DataTableDataTable.Select从中检索行。这Select需要多个AND条件包括通配符匹配。我玩过并发现通过做同样的事情Select多步执行可以大大减少执行时间,但是改变一下执行顺序AND声明不影响它。

//This takes ~ 750 ms
DataRow[] results = myDataTable.Select("Field1 LIKE '*" + term1 + "*'" +
"AND Field2 = '" + term2 + "'" +
"AND Field3 = '" + term3 + "'");

//This also takes ~750 ms
DataRow[] results2 = myDataTable.Select("Field3 = '" + term3 + "'" +
"AND Field2 = '" + term2 + "'" +
"AND Field1 LIKE '*" + term1 + "*'");  

//This takes 0.415 ms
DataTable table1 = myDataTable.Select("Field3 = '" + term3+ "'").CopyToDataTable();
DataTable table2 = table1.Select("Field2 = '" + term2 + "'").CopyToDataTable();
DataRow [] results3 = table2.Select("Field1 LIKE '*" + term1 + "*'");  

我的问题是,有没有办法始终使SELECT操作评估AND按从左到右的顺序排列条件,以便减少步骤之间搜索的记录数量?看来这可以很好地节省时间。谢谢你的想法。


你可以使用Linq(请注意,最慢的条件是最后一个):

IEnumerable<DataRow> rows = myDataTable.AsEnumerable()
    .Where(r => r.Field<string>("Field2") == term2
            &&  r.Field<string>("Field3") == term3
            &&  r.Field<string>("Field1").Contains(term1));

Use CopyToDataTable如果你想从结果创建一个新的数据表,ToArray创建一个DataRow[]或者留下它并使用foreach枚举结果而不创建新集合。

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

具有多个 AND 条件的 DataTable 选择实现 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 将引用类型和值类型作为参数传递给方法之间的区别

    一整天都在我的脑海中萦绕着这种困惑 我对传递给方法的引用类型和值类型感到非常困惑 假设我有 2 节课Class A and Class B分别对应于引用类型和值类型 public Class A public static void mai
  • 通过 websocket 的 SIP 到真正的 SIP

    我正在尝试实现一个 sip 服务器用于从HTMLsip客户端 使用sipml5制作 在我研究这样做的过程中 我遇到了 sip over web sockets 这可能对我有用 但是 我不确定用户代理是否通过 sip over 连接web s
  • 从 FlinkML 多元线性回归中提取权重

    我正在运行 Flink 0 10 SNAPSHOT 的示例多元线性回归 我不知道如何提取权重 例如斜率和截距 beta0 beta1 无论你想怎么称呼它们 我对 Scala 不太熟悉 这可能是我问题的一半 感谢任何人可以提供的任何帮助 ob
  • NSView 中的多线程绘制

    在我的代码中 我子类化了NSView并在其drawRect方法中 我生成三个线程来执行绘图 void drawRect NSRect dirtyRect self window setAllowsConcurrentViewDrawing
  • Firefox 上的 Javascript 浏览器抖动

    是否可以使用Javascript来撼动Firefox浏览器 我找到了一个适用于 Safari 的脚本 但该脚本似乎不适用于 Firefox http www jhuskisson com javascript earthquake effe
  • R ifelse 语句

    我对 R 还很陌生 我有以下由字符组成的数据集 数据框 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y N N Y Y Y Y Y Y Y Y N Y Y Y Y Y Y
  • 错误:请求对象已被使用

    我不断在控制台日志中收到此错误 未捕获 承诺中 类型错误 无法在 ServiceWorkerGlobalScope 上执行 获取 无法使用已使用的请求对象构造请求 我尝试更改我的 Service Worker 但不起作用 self addE
  • Facebook 在分享我自己的页面时未检测到视频

    我有一个包含许多视频页面的网站 每页只有一个视频 当我在 Facebook 上分享其中一个页面的链接时 它不被视为视频 而只是一篇标准文章 缩略图 标题和描述都显示良好 但我希望 Facebook 显示视频 而不是显示缩略图 我在用着vid
  • 如何从 xcode 显示 xcodebuild 命令行?

    我正在尝试从 xcodebuild 构建一个工作模拟器版本 编译可以工作 但通过 WaxSim 安装时 最终产品将无法在模拟器上运行 如果我通过 Xcode GUI 构建 那么最终产品安装时不会出现 WaxSim 的问题 我的问题是 我怎样
  • Qt 检测标题栏上的鼠标单击(Windows)

    event 或 mousePressEvent 函数适用于小部件内部 但我想在单击标题栏 菜单栏的上部 包含关闭按钮等 时捕获 我怎样才能做到这一点 您可以重写nativeEvent 然后获取鼠标位置与geometry 不包括窗口框架 和f
  • 组名称变量在天蓝色管道中可以是动态的吗?

    我在 azure 上有两个环境 它们之间的区别之一只是来自变量组的环境变量 是否可以为一个管道动态设置组名称 而不是设置两个可以映射自己的组变量的管道 这是我的构建管道的示例 trigger master develop jobs job
  • jquery 无法在 Rails 中运行

    我已经阅读了很多关于在 Rails 中使用 jquery 的页面 但似乎仍然无法让它工作 我有 jquery rails gem 并且安装了 我在 application js 文件中有 require 语句 这是我一直运行的测试页面
  • Commission Junction 直接链接

    有谁知道是否有办法通过跟踪直接链接到 Commission Junction 上的广告商 我们不想依赖提要中发送的链接 因为其中很多都是垃圾链接 我想要的是一个仅转到广告商主页并且仍然允许我们接收佣金的链接 就像是 如果它必须通过 CJ 的
  • 使用 ruby​​-gmail 读取 Gmail 邮件

    我正在寻找一个实例方法ruby gmailgem 可以让我阅读 身体 或者 subject Gmail 邮件的 查看文档后发现here http www rubydoc info gems ruby gmail 0 3 1 我什么也没找到
  • 单击链接后保持全屏 api 全屏显示

    我正在使用 HTML5 全屏 API 因此用户可以全屏查看我的网站 但是当用户单击链接 例如菜单项 时 用户会切换回正常浏览器模式 当用户单击某些链接时 如何使浏览器保持全屏 最好不必将整个网站转换为 AJAX 页面加载系统 如果不转换为
  • 选项卡背景颜色幻灯片过渡到下一个选项卡

    我正在尝试实现背景过渡 当您单击选项卡时 当前选项卡的背景会滑动到单击的选项卡 有人可以帮忙吗 before after box sizing border box radio wrap input position absolute op
  • Angular Date 过滤器在 Firefox 中不起作用

    我正在使用日期过滤器来格式化我的角度应用程序中的日期 在 Firefox 中 我得到的日期值为 未定义 NaN NaN NaN NaN NaN PM 在 Chrome 中 它的工作原理非常完美 2014 年 6 月 25 日 7 22 47
  • Javascript split 将字符串分成两部分,无论字符串中存在多少个吐出字符

    我想使用 split 函数将 Javascript 中的字符串拆分为两部分 例如我有字符串 str 123 345 678 910 如果我使用 javascripts split 它会将其分为 4 部分 但我需要它分为两部分 仅考虑它遇到的
  • InfoPath 2013 是否支持 Visual Studio 2013?

    我正在尝试为 InfoPath 2013 表单开发自定义代码 我安装了 Visual Studio 2013 Professional 但在尝试编辑代码时收到以下消息 The following external components ar
  • 具有多个 AND 条件的 DataTable 选择实现

    我正在使用一个包含大约 50 000 行的 DataTableDataTable Select从中检索行 这Select需要多个AND条件包括通配符匹配 我玩过并发现通过做同样的事情Select多步执行可以大大减少执行时间 但是改变一下执行