Entity Framework содержит / в разделе с SQLCE - PullRequest
1 голос
/ 01 декабря 2010

Я пытаюсь выбрать элементы из таблицы SQLCE, где поле существует в массиве строк.Это легко сделать в SQL:

SELECT * 
FROM TableX
WHERE SomeField In
([comma delimited array values]);

Мне трудно перенести это в LINQ.Следующее будет логически работать, но оно получает эту ошибку: LINQ to Entities не распознает метод 'Boolean Contains [String] (System.Collections.Generic.IEnumerable`1 [System.String], System.String)', и этот метод не может быть переведен в выражение магазина.

var result = from c in DB.TableX
             where someStringArray.Contains(c.SomeField)
             select c;

Пожалуйста, дайте мне знать, если у кого-нибудь есть какие-либо идеи или советы.

Спасибо!

Обновление:

Следующее, рекомендуемое ниже, создает исключение NotSupportedException с сообщением об ошибке, где класс X - это класс, вызывающий перечисление: Невозможно создать постоянное значениевведите «NamespaceX.ClassX».В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid) .

var result = from c in DB.TableX
             where someStringArray.Any(s => s == c.SomeField)
             select c;

1 Ответ

1 голос
/ 01 декабря 2010

1001 * попробовать *

var result = from c in DB.TableX
             where someStringArray.Any(s => s == c.SomeField)
             select c;

Пожалуйста, отметьте как ответ, если это решит вашу проблему.

...