LINQ to SQL 查询中的自定义方法

2024-04-21

是否可以在查询中使用自定义方法,例如:

var result = from u in context.MyTable where MyMethod(u) == 10 select u;

正如 Pranay 所解释的,您不能将自定义 (C#) 方法作为 LINQ to SQL 查询的一部分,因为 LINQ to SQL 无法查看该方法的表达式树,因此无法将其转换为 SQL。

您可以选择的一种选择是用 SQL 编写函数并将其作为 SQL 函数存储在 SQL Server 上(您也可以使用 SQL CLR,但我还没有尝试过)。然后您可以将该功能添加到您的DataContext类型,LINQ to SQL 会将其转换为对 SQL Server 上函数的调用。就像是:

var result = from u in context.MyTable 
             where context.MyMethod(u) == 10 select u; 

当然,问题是您需要用 SQL 编写该函数(我认为 SQL CLR 也可以工作 - 但不确定性能和其他可能的复杂情况)

I also 写了一篇文章 http://tomasp.net/blog/linq-expand.aspx(不久前)它展示了当您将“方法”编写为表达式树方式(作为类型的值)时如何执行此操作Expression<Func<...>>),这是可能的,因为在这种情况下,代码被编译为表达式树。但是,必须完成一些后处理,并且您仍然可以只编写一个可以轻松内联到 LINQ 查询中的表达式。

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

LINQ to SQL 查询中的自定义方法 的相关文章

随机推荐

  • 打开 PHPStorm 项目时可以自动运行终端命令吗?

    我有一个 Gulp 工作流程 我希望在 PHPStorm 中打开我的项目时自动启动该工作流程 这可能吗 Not possible at the moment https youtrack jetbrains com issue WEB 11
  • gcc -g 调试标志会影响程序执行吗?

    我刚刚测试了我正在工作的一个程序 当我使用 g 编译它时 我发现它的执行速度快了 3 s 统计上显着的变化 这对我来说毫无意义 我认为 g 标志不应该影响程序执行 即使它影响程序执行也会使它运行得更慢 而不是更快 谁能告诉我为什么会发生这种
  • .NET 3.5 SDK 位于哪里?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 谁能提供下载 NET 3 5 SDK 的链接吗 我检查了微软网站和谷歌 但找不到这个的下
  • Grails 在 Service 类中获取 Session 和 Management

    我对 Grails 会话有疑问 我正在考虑为我的会话处理提供一个服务类 所以我创建了一个名为 SessionService 的类 在 grails app services grails 下 class SessionService sta
  • Spring Boot @ExceptionHandler 隐藏异常名称

    我正在使用 Spring Boot 1 3 X 并具有以下内容 RestController RequestMapping path foo public class FooController RequestMapping method
  • C# - 无法找到 x64 平台的库“leptonica-1.80.0.dll”

    我正在使用 Tesseract 5 2 0 创建一个控制台应用程序 下面是我的代码 System Drawing Bitmap img new System Drawing Bitmap convertedFile TesseractEng
  • 迭代 Lotus Domino 中的每个文档

    我希望迭代 可能很大 Lotus Domino 数据库中的每个文档 并且如果处理中断 网络连接错误 应用程序重新启动等 能够从上一个文档继续 我没有数据库的写入权限 我正在寻找一种方法 无需从服务器下载那些已处理的文档 因此 我必须将一些启
  • 如何将其他Python解释器设置为IPython

    我们可以更改 IPython 使用的 Python 解释器版本吗 我知道有 IPython 和 IPython3 但问题是 IPython 使用 Python2 7 而 IPython3 使用 Python3 4 2 我看不出有什么办法可以
  • pandas DataFrame如何混合不同比例的条形图和线图

    我试图让 pandas 覆盖条形图和线图 这两个系列具有不同的比例 因此我希望将值绘制在两个 y 轴上 我无法让 pandas 一起显示 条形图 和 线形图 from pandas import DataFrame df eg DataFr
  • 在 Angular2 中使用 ng-model 和 ng-control 之间的区别?

  • 如何在使用 QSS 悬停父 QFrame 时设置子 QLabels 的颜色?

    我试图使用样式表设置 QFrame 内 2 个标签的悬停状态颜色 但无论是否存在实际悬停 框架都会采用悬停状态 See screenshot 我有一个带有 QLabels 的 QFrame 我将默认颜色设置为绿色和紫色 当我将鼠标悬停在 Q
  • 了解 z-index 堆叠顺序

    我对使用有点困惑z index决定堆栈顺序 我不太明白浏览器如何处理元素position财产与没有财产的人联合起来 无论是否有明确定位的元素 是否有一个通用规则来决定元素的堆栈顺序 不同情况的例子值得赞赏 一般来说 混血兄弟姐妹 div 有
  • CSS3 - 在精灵图像的“背景位置”之间淡入淡出

    我想在精灵图像的 背景位置 之间淡入淡出仅使用CSS 我找到了很多教程 但没有找到像这样简单的东西
  • Findbugs contrib:方法从 catch 块中抛出替代异常,没有历史记录

    fb contrib 抱怨 方法从 catch 块中抛出替代异常 没有历史记录 在我的 try catch 块之一中 如何解决这个问题 有关于如何解决这个问题的详细解释吗 原始异常被捕获 您的代码抛出另一个异常 而不将原始异常包含在java
  • Android Studio 2.1.3 中构建错误

    我使用的是android studio 2 1 3 尽管清除了项目并再次重建 重新启动等 我还是收到以下错误 如何解决 错误 任务执行失败 app transformClassesWithJavaResourcesVerifierForDe
  • 在游标内使用 Merge 语句

    我们需要填充一个主表 该表由 20 个不同表中的列组成 我编写了一个存储过程来连接一些返回最大列数的表并将它们放在游标中 现在 我正在使用 for 循环来迭代游标记录 以便可以将它们插入主表中 如何在游标 for 循环内使用合并语句 以便我
  • 在序言中减去或添加列表的列表?

    我对序言相当陌生 正在尝试摆弄列表列表 我很好奇如何添加两个列表列表或减去它们从而得到一个列表列表 如果我有两个列表 可以说 SomeList 1 2 3 4 5 6 7 8 SomeList2 1 2 3 4 5 6 7 8 我该如何添加
  • 如何在不使用 INSERT INTO SELECT 语句的情况下实现此程序以导入到表中?

    目前导入 插入过程运行良好 但我不想为插入和选择编写一个查询 而是编写一个单独的查询来从 snomed descriptiondata 表中进行选择 并编写一个单独的查询来插入 snomedinfo data 表 我当前的代码 packag
  • 来自 VueX 和 NuxtJS 的持久状态

    我使用 vuex persistedstate 包 https github com robinvdvleuten vuex persistedstate https github com robinvdvleuten vuex persi
  • LINQ to SQL 查询中的自定义方法

    是否可以在查询中使用自定义方法 例如 var result from u in context MyTable where MyMethod u 10 select u 正如 Pranay 所解释的 您不能将自定义 C 方法作为 LINQ