2010-04-02 7 views
5

Можете ли вы добавить условие «Или» к сущности в структуре сущности? Например, что-то вроде:Добавить или условие для объекта в структуре объекта

property1 == (1 или 2 или 3)

сообщения я получаю при вводе значения "1 || 2 || 3" или «1,2 , 3" или "1 или 2 или 3" возвращает это сообщение:

condition is not compatible with the type of the member 

ответ

11

Вам нужно сделать:

var results = entityCollection.Where(entity => entity.Property1 == 1 || entity.Property1 == 2 || entity.Property1 == 3); 
+0

Я боялся этого. То, что я хотел бы сделать, - это одно и то же условие, которое должно выполняться каждый раз, когда выполняется запрос к этой таблице, поэтому мне не нужно писать указанный выше код каждый раз, когда я попадаю в таблицу. –

+0

@Blakewell: Поместите запрос в класс утилиты, чтобы вы могли его повторно использовать. –

+1

@Reed Copsey: Вам не хватает 'entity =>'? –

3

Не пробовал, но вы можете попробовать использовать contains. Не уверен, что о производительности, но код меньше:

int[] vals = new int[] { 1, 2, 3, 4 }; 
var results = entityCollection.Where(entity => vals.Contains(entity.Property1)); 
+1

«Содержит» поддерживается только в EF 4, который еще не выпущен (выходит 12-й с .Net 4). На веб-сайте MS есть кандидат на выпуск. –

+0

Даже не подумал об этом - я некоторое время использовал EF 4, так что это казалось нормальным. –

10

Вы должны также проверить предикат строитель: http://www.albahari.com/nutshell/predicatebuilder.aspx

Это немного более продвинутый, но если у вас есть динамически цепь условий, это ваш лучший выбор ,

foreach (string keyword in keywords) 
    { 
    string temp = keyword; 
    predicate = predicate.Or (p => p.Description.Contains (temp)); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^