2010-04-02 6 views
5

Czy można dodać warunek "Lub" do jednostki w strukturze podmiotu? Na przykład coś takiego:Dodanie warunku do encji w strukturze podmiotu

Property1 == (1 lub 2 lub 3)

wiadomości otrzymuję gdy wprowadzenie wartości "1 || 2 || 3" lub „1,2 , 3" lub "1 lub 2 lub 3" zwraca komunikat:

condition is not compatible with the type of the member 

Odpowiedz

11

trzeba zrobić:

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

Bałem się tego. Chciałbym, aby ten sam warunek był spełniony za każdym razem, gdy zapytanie do tej tabeli jest wykonywane, tak że nie muszę pisać powyższego kodu za każdym razem, gdy trafiam do tabeli. –

+0

@Blakewell: Umieść zapytanie w klasie narzędziowej, aby móc go ponownie użyć. –

+1

@Reed Copsey: Brakuje "entity =>"? –

3

Nie próbowałem tego, ale możesz spróbować użyć contains. Nie wiesz, o wydajności, ale kod jest mniejszy:

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

'Contains' jest obsługiwane tylko w EF 4, które nie zostało jeszcze wydane (wychodzi na 12 z .Net 4). Na stronie internetowej MS jest dostępny kandydat do wydania. –

+0

Nawet o tym nie myślałem - używam EF 4 przez jakiś czas, więc wydawało się to normalne. –

10

Należy również sprawdzić źródłowe producentów: http://www.albahari.com/nutshell/predicatebuilder.aspx

Jest nieco bardziej zaawansowane, ale jeśli masz dynamicznie łańcucha warunki to jest najlepszym .

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