当前位置:  开发笔记 > 编程语言 > 正文

Linq to SQL和Collection操作

如何解决《LinqtoSQL和Collection操作》经验,为你挑选了1个好方法。

我有一个字典,我想像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对我不起作用.

有任何想法吗?



1> Marc Gravell..:

尝试将密钥放入一个简单的列表中并使用Contains:

var keys = MyDictionary.Keys.ToList();

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

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有