У меня есть словарь, который я хотел бы использовать как предложение IN в SQL-запросе.Операции Linq to SQL и Collection
У меня есть запрос Linq-To-SQL, где я бы хотел использовать эти словарные ключи для проверки полей в строках запроса.
E.g.
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. Похоже, что это проблема поставщика подключения, поэтому, поскольку предложение Марка перевести на список не работает для меня.
Любые идеи?
(протестирован против Борей - работает отлично) –
Спасибо за предложение, но без изменения - FWIW Я подключение к SQL Server 2005. – Unsliced
Какая ошибка вы получаете с этой версией? (Он не может быть таким же, как ContainsKey и поставщики 2005/2008 не могут самостоятельно генерировать исключения «без поддержки перевода»). – DamienG