Linq 到自定义 SQL

2024-05-13

好的,我有一个带有巨大表的数据库。超过 100 万条记录和 50 多个列。 (我知道它不是最佳的,但它是我必须处理的)所以我需要运行限制返回数据量的查询。现在我的问题是这样的。我有一些运行并返回数据的自定义查询。用户可以通过选择将生成谓词模板并将其应用到列表的过滤器和选项来进一步过滤该数据。我现在需要获取谓词列表并将它们组合起来并重新查询数据库以搜索(更改或其他条目匹配)。问题是这样的

private Func<table,bool> filterAll()
    {

        Func<table, bool> temp = null;
        var list = mylist.filterList; //filterlist is a list<Predicate<table>>
        var list2 = list.Select(val => val.Value).ToArray();

        foreach(var a in list2)
        {

            temp += t => a(t);
        }
        return temp;
    }

    private void loadWithFiltersButton_Click(object sender, EventArgs e)
    {


        var temp = db.table.Where(filterAll());

    }

我无法将谓词转换为可用的 sql 查询。我收到一个异常,说它无法为谓词列表生成 sql。我也尝试过这个

Func<table, bool> query1 = temp2 => temp2.Name.Contains("test string");
Func<table, bool> query2 = temp2 => temp2.ignore == false;
var temp = db.table.Where(query1);
var myval = temp.Where(temp2 => temp2.Name.Contains("test string")).Select(val => val).ToList();

虽然这确实执行了问题,但生成的 sql 会下拉整个表,并且根本不会生成 where 子句。

我一直在寻找并找到了这个https://stackoverflow.com/questions/974719/how-to-use-linq-to-compile-a-lambda-expression-to-custom-sql-or-otherwise https://stackoverflow.com/questions/974719/how-to-use-linq-to-compile-a-lambda-expression-to-custom-sql-or-otherwise但人们在答案中发布的所有链接对我来说都是死的。

那么基本上如何将多个谓词组合成一个可用的查询,以使数据库返回尽可能少的数据量?

编辑:也尝试过这个在 C# 中连接 Lambda 函数 https://stackoverflow.com/questions/491780/concatenating-lambda-functions-in-c-sharp但也会抛出无法生成sql查询的异常。


尝试使用

SqlMethods.Like(temp2.Name, "test string")

代替:

temp2.Name.Contains("test string")

为此,您必须添加引用:

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

Linq 到自定义 SQL 的相关文章

  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • C# 中一次性对象克隆会导致内存泄漏吗?

    检查这个代码 class someclass IDisposable private Bitmap imageObject public void ImageCrop int X int Y int W int H imageObject
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 索引在 NOT IN 或 <> 子句中起作用吗?

    我读过 至少 Oracle 数据库中的普通索引基本上是 B 树结构 因此存储处理适当根节点的记录 小于 根的记录被迭代地存储在树的左侧部分 而 大于 根的记录被存储在右侧部分 正是这种存储方法有助于通过树遍历实现更快的扫描 因为深度和广度都
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • parent_id 是外键(自引用)并且为 null?

    浏览 Bill Karwin 的书 SQL Antipatterns 第 3 章 Naive Trees 邻接表 父子关系 有一个注释表的示例 CREATE TABLE Comments comment id SERIAL PRIMARY
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle

随机推荐

  • 如何取消同步 WinHttp 请求?

    我的服务有一个线程可能正在执行WinHttpSendRequest当有人试图停止我的服务时 The WinHttpCloseHandle 文档 http msdn microsoft com en us library windows de
  • 将 r 数据框中的列字符串转换为数字

    我有一个数据框 其中有一列字符串 如下所示 mydata lt c 1 356670 35 355030 1 356670 35 355030 1 356620 35 355890 1 356930 35 358660 1 357000 3
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • SQL Server:复制表中的列

    将表中的列中的所有值复制到同一表中的另一列的最简单方法是什么 使用单个语句 如果列具有相同的数据类型 UPDATE
  • GAE Go — 如何对不存在的实体键使用 GetMulti?

    我发现自己需要做一个GetMulti使用键数组进行操作 其中某些实体存在 但有些实体不存在 我当前的代码 如下 返回错误 datastore no such entity err datastore GetMulti c keys info
  • 将剪贴板上的图像粘贴到 Emacs Org 模式文件而不保存它

    由于我使用 Emacs Org 模式作为研究日志 有时我想通过屏幕截图来跟踪某些内容 但我绝对不想保存它们 所以我想知道是否有任何方法可以将这些数字插入到我的组织模式文件中 就像使用 word 从剪贴板复制它们一样 您想要的确切功能目前尚未
  • 将二维数组拆分为每行数组的最Pythonic方法是什么?

    我有一个函数 foo 返回形状为 1000 2 的数组 如何将其拆分为两个数组 a 1000 和 b 1000 我正在寻找这样的东西 a b foo 我正在寻找一个可以轻松推广到形状为 1000 5 左右的情况的答案 The zip idi
  • Kubernetes Ingress 在 nginx 反向代理后面运行

    我已经在可以从互联网访问的服务器上安装了 minikube 我创建了一个可用的 kubernetes 服务 gt kubectl get service myservice NAME CLUSTER IP EXTERNAL IP PORT
  • 寻找距离原点最近的 100 颗恒星的算法

    首先让我提出正确的问题 问 有一个文件包含超过一百万个点 x y 每个点代表一颗星星 a b 处有一颗行星地球 现在 任务是构建一种算法 返回距离地球最近的 100 颗恒星 您的算法的时间和空间复杂度是多少 这个问题在各种采访中被问过很多次
  • Gulp 错误:找不到模块“jshint/src/cli”

    因此 我重新安装了 El Capitan 并再次尝试这些任务运行程序 我正在跟进sitepoint 的 Gulp js 简介 http www sitepoint com introduction gulp js 但当我尝试运行时 我陷入了
  • 没有带有张量板的图表

    我正在读一本关于 Tensorflow 的书 我发现了这段代码 from future import absolute import from future import division from future import print
  • System.Web.Mvc.HtmlHelper 不包含以下定义

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 关于编辑可变长度列
  • removeIf 实现细节

    我有一个我无法理解的小实施细节问题ArrayList removeIf 我认为我不能在没有先决条件的情况下简单地这么说 因此 实施基本上是bulk remove 不像ArrayList remove 一个例子应该会让事情更容易理解 假设我有
  • 如何覆盖应用程序中的内部框架方法(框架外部)

    在 Swift 中子类化时是否有重写内部框架方法 前任 超类 public class BarChartRenderer ChartDataRendererBase internal func drawDataSet context con
  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • JOOQ 查询 JOIN ON WITH 子句

    如何编写 JOOQ 查询来连接 with 子句中的字段 例如 我尝试过 create with a as select val 1 as x val a as y select from tableByName a join ANOTHER
  • 如何在android中实现页面翻转/翻转/卷曲效果[重复]

    这个问题在这里已经有答案了 可能的重复 在android上实现页面卷曲 https stackoverflow com questions 3912849 implement page curl on android 如何在android中
  • 在 MongoDB 中,如何根据嵌入对象中的属性对文档进行排序?

    在我的产品集合中 我可以找到已在 GB 地区发布的所有产品 gt db products find release region GB pretty id foo release region GB date ISODate 2012 03
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • Linq 到自定义 SQL

    好的 我有一个带有巨大表的数据库 超过 100 万条记录和 50 多个列 我知道它不是最佳的 但它是我必须处理的 所以我需要运行限制返回数据量的查询 现在我的问题是这样的 我有一些运行并返回数据的自定义查询 用户可以通过选择将生成谓词模板并