我有一个字典,我想将其用作 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/