CompiledQuery 与 List.Contains (where...in list) 功能?

2024-04-08

我正在尝试使用 Linq-to-Entities 编写 CompiledQuery,它将替换采用两个数组(在本例中为逗号分隔的 TEXT)参数的存储过程。本质上,SQL 是这样的:

*Stored Proc definition*
@ArrayParm1    TEXT,
@ArrayParm2    TEXT
-- etc. 
SELECT [fieldList] 
FROM someTable
WHERE someTable.Field1 IN (SELECT * FROM dbo.fncCSVToTable(@ArrayParm1))
AND someTable.Field2 IN (SELECT * FROM dbo.fncCSVToTable(@ArrayParm2))

dbo.fncCSVToTable使用数组值创建一个单列临时表。

将其转换为已编译的 Linq-to-Entities 查询似乎并不困难:

public static Func<EntityContext, List<int>, List<string> IQueryable<EntityType>>
    SomeQuery = 
        CompiledQuery.Compile((EntityContext context, List<int> arrayParm1, 
                               List<string> arrayParm2) =>
            from c in context.SomeTableEntities
            where arrayParm1.Contains(c.Field1)
                && arrayParm2.Contains(c.Field2)
            select new EntityType
            { 
                //projection
            });

但是,我收到运行时错误,指出参数Func<>不能是列表,并且仅支持标量参数。这对我来说很有意义,但我仍然觉得必须有一种方法可以在编译的查询中执行此操作。有谁知道有什么办法吗List.Contains or WHERE ... INL2E CompiledQuery 中的类型功能?


我怀疑在为非编译查询生成的 SQL 中,它使用

WHERE someTable.Field1 In (?, ?, ?)

例如,对于三个值...而不是fncCSVToTable功能。

现在,编译查询的部分目的是提前计算出 SQL...这里,确切的 SQL 将取决于列表中的项目数量(因为它将需要那么多查询参数)。我怀疑这会让它变得很尴尬,因为它不被支持。

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

CompiledQuery 与 List.Contains (where...in list) 功能? 的相关文章

随机推荐

  • 如何最好地计算两个城市(加拿大)之间的距离?

    我有一个客户希望我计算城市之间的英里距离 我正在用 PHP javascript 做项目 我一直在阅读一些长 纬度数据库 但仍然无法找到从哪里开始以及使用什么 是否有任何网络服务可以通过传递两个城市名称来查询 并且它可以返回以英里或公里为单
  • 可以将用户的盐与密码哈希保存在同一个表中吗?

    是不是还好而且没啥用 它可以保存在另一个表甚至另一个数据库中 你怎么认为 附 为了更高的安全性 我也有常量的盐 花生 它是保存在配置文件 而不是数据库 中的常量值 因此 如果黑客想要以某种方式破解密码 他还需要访问文件服务器和数据库 是的
  • 迭代 Hogan.js 中的键/值

    有没有办法使用 Hogan js 迭代对象中的键和值 我无法找到此类记录的功能 似乎只记录了数组的迭代 是否甚至可以迭代 hogan js 或任何其他 moustache js 实现 中的对象 在 Hogan js 中无法直接迭代对象中的键
  • 类模板中的 Constexpr 成员函数

    以下代码无法编译 template
  • NSMutableAttributedString:如何在 iOS 上以编程方式删除最后一个字符?

    我有一个自定义键盘 我必须在将 nsmutableattributedstring 作为文本 字符和 nstextattachment 的组合 的文本视图上执行退格操作 根据 Moxy 的说法 如果您的最后一个字符足够大 无法容纳在单个 U
  • Extjs 4.1 多对多模型关联

    当我想创建多对多关联时 我遇到一些问题 因为它不知道 我尝试以这种方式建立关系 但我不确定 任何人都可以帮助我吗 我该怎么做 这是我的代码 Ext define Ext4Example model Category extend Ext d
  • 在 MEF 和 MAF 之间进行选择 (System.AddIn)

    托管扩展性框架 MEF 和托管外接程序框架 MAF 又名 System AddIn 似乎完成非常相似的任务 根据这个堆栈溢出问题 MEF 是 System Addin 的替代品吗 https stackoverflow com questi
  • Angular 5:使用 Angular 将回调方法传递给第三方脚本

    I really导入的第 3 方脚本来触发类似的功能show end screen below 我的组件 import Router from angular router import init game start game stop
  • Android 应用程序密钥哈希与任何存储的密钥哈希不匹配

    我在 Play 商店上有一个生产应用程序 它使用 Facebook SDK 登录 当我从 Eclipse 调试应用程序时没有问题 但是当它投入生产时 在 Facebook 询问我权限后 它给了我以下错误 我已使用以下命令在developer
  • 如何杀死 ubuntu 上端口上的进程

    我正在尝试在命令行中终止 ubuntu 中特定端口的进程 如果我运行此命令 我会得到端口 sudo lsof t i 9001 所以 现在我想运行 sudo kill sudo lsof t i 9001 我收到此错误消息 ERROR ga
  • 如何使用 Python 将 Excel 图表粘贴到 PowerPoint 占位符中?

    我有一个 excel 文件 其中一个名为的选项卡上有一系列格式化图表Charts 我已经给图表命名了 Figure1 Figure2 Figure3 etc 我有一个现有的 PowerPoint 模板 该模板每张幻灯片有 2 个占位符 以便
  • 列表视图的自定义适配器

    我想创建一个custom adapter对于我的列表视图 是否有任何文章可以引导我完成如何创建一个并解释其工作原理 public class ListAdapter extends ArrayAdapter
  • Cordova 3.7 在每个本机调用上复制 iframe

    自从我升级到 Cordova 3 7 以来 每个本机调用都会将一个新的 iframe 附加到 DOM 如下所示 为了排除现有代码影响 cordova 的可能性 我尝试使用 cordova CLI 创建一个新代码 添加控制台插件并在 devi
  • 几何级数中的数字

    如何在 R 中生成几何级数中的数字序列 例如我需要生成序列 1 2 4 8 16 32 等等 直到说一个有限值 这就是我要做的 geomSeries lt function base max base 0 floor log max bas
  • 模块之间共享资源的良好做法? [关闭]

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

    我试图通过遵循本教程来了解 Sinatra ruby 框架 http net tutsplus com tutorials ruby singing with sinatra the recall app 2 http net tutspl
  • Double Not Exists SQL逻辑解释

    有 2 张表 一张称为 drinkers 有一列名称 另一个称为 frequents 有 2 列 即 drinkers 和 bars 他们经常光顾的 我有一个查询可以回答此声明 Drinkers who frequent all bars
  • Android:以编程方式从剪贴板中删除单个项目

    Android 剪贴板服务允许您将文本或其他项目添加到剪贴板中 在大多数 Android 设备上 Clipdata 项目将被插入到未定义最大内容数的堆栈中 我的问题如下 我有一个密码管理器应用程序 可以将选定的密码插入剪贴板 但由于密码是高
  • 如何在Delphi中一次正确地释放包含各种类型的记录?

    type TSomeRecord Record field1 integer field2 string field3 boolean End var SomeRecord TSomeRecord SomeRecAr array of TS
  • CompiledQuery 与 List.Contains (where...in list) 功能?

    我正在尝试使用 Linq to Entities 编写 CompiledQuery 它将替换采用两个数组 在本例中为逗号分隔的 TEXT 参数的存储过程 本质上 SQL 是这样的 Stored Proc definition ArrayPa