c# - Linq to SQL 和集合操作

标签 c# sql-server-2005 linq-to-sql .net-3.5 collections

我有一个字典,我想将其用作 SQL 查询中的 IN 子句。

我有一个 Linq-To-SQL 查询,我想在其中使用此字典的键来检查查询行中的字段。

例如

bool result = DataContext.Table.Any(res => MyDictionary.ContainsKey(res.field1)); 

实际上这类似于

    exists(select * from Table where field1 in (select id from DictionaryKeys)) 

其中 DictionaryKeys 是将键扩展到它们自己的表中。

不幸的是我得到了

System.NotSupportedException was unhandled
Message="Method 'Boolean ContainsKey(System.String)' has no supported translation to SQL."
Source="System.Data.Linq"

我理解这个错误,但我正在努力想出一个不同的解决方案。

编辑: 我正在连接到 SQL 2005。看起来这是一个连接提供程序问题,因为 Marc 转换为列表的建议对我不起作用。

有什么想法吗?

最佳答案

尝试将键放入一个简单的列表中并使用包含:

var keys = MyDictionary.Keys.ToList();

DataContext.Table.Any(res => keys.Contains(res.field1));

关于c# - Linq to SQL 和集合操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/520462/

相关文章:

SQL 子字符串 - 删除最后一个字符

c# - LINQ-To-SQL NOLOCK(未读未提交)

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'userlogins' 中为标识列插入显式值?

c# - 文本框对齐文本

c# - 如何定义 Nullable EntitySet<>?

c# - 如何计算 C#.net 中 oledbconnection 中的总行数

c# - WPF 应用程序中 Controller 的位置是什么

sql - 分组时在输出中获取一列,但仅当分组列只有一行时才对该列进行分组

sql-server - 复合主键和附加索引

asp.net - 我需要对 MVC 架构和三层架构进行一些说明