2010-04-02 12 views
5

¿Se puede agregar una condición "O" a una entidad en el marco de la entidad? Por ejemplo algo como:Agregar o condición a la entidad en Entity Framework

Propiedad1 == (1 o 2 o 3)

El mensaje que recibo al poner el valor de "1 || 2 || 3" o "1,2 , 3" o "1 o 2 o 3" devuelve el siguiente mensaje:

condition is not compatible with the type of the member 

Respuesta

11

que tiene que hacer:

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

Tenía miedo de eso. Lo que me gustaría hacer es que la misma condición se produzca cada vez que se ejecute una consulta en esa tabla, de modo que no tenga que escribir el código anterior cada vez que llegue a la mesa. –

+0

@Blakewell: coloca la consulta en una clase de utilidad para que puedas reutilizarla. –

+1

@Reed Copsey: ¿Te estás perdiendo una 'entidad =>'? –

3

No lo he intentado, pero podría intentar usar contains. No estoy seguro sobre el rendimiento, pero el código es más pequeña:

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

'Contains' solo se admite en EF 4, que aún no se ha lanzado (saldrá el 12 con .Net 4). Hay un candidato de lanzamiento en el sitio web de MS. –

+0

Ni siquiera pensé en eso. He estado usando EF 4 por un tiempo, así que esto parecía normal. –

10

También debe comprobar fuera predicado constructor: http://www.albahari.com/nutshell/predicatebuilder.aspx

Es un poco más avanzado, pero si tiene que encadenar dinámicamente condiciones es la mejor opción .

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