我有一个字典,我想像SQL查询中的IN子句一样使用它.
我有一个Linq-To-SQL查询,我想使用此Dictionary的Keys来检查查询行中的字段.
例如
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的建议转换为List对我不起作用.
有任何想法吗?
尝试将密钥放入一个简单的列表中并使用Contains:
var keys = MyDictionary.Keys.ToList(); DataContext.Table.Any(res => keys.Contains(res.field1));