2010-04-29 14 views
7

hay en el operador en SQLC# analógico para SQL en el operador

SELECT * FROM MyTable WHERE id IN (1, 2, 3, 4, 5) 

¿Hay sintaxis similar en C#, quiero decir

if(variable in (1, 2, 3, 4, 5)){ 
} 
+0

podía comprender la pregunta es, ¿cuál es la manera más fácil de hacer tal cosa –

Respuesta

10

No es buena pero se puede escribir por sí mismo como un método de extensión:

public static class Extensions 
{ 
    public static bool In<T>(this T value, params T[] items) 
    { 
     return items.Contains(value); 
    } 
} 

if (v.In(1,2,3,5)) { /* do stuff */ } 

Yo no lo he probado, pero debe ser bueno.

ACTUALIZACIÓN: Como lo sugirió OP, he corregido algunos errores tipográficos.

+0

wow, esto es realmente fresco He corregido un poco public static bool En (este valor T, T params []) { artículos items.Contains de retorno (valor); } –

+0

Gracias. Encantado de ayudar. – pblasucci

14

Puede tener

int[] data = {1, 2, 3, 4, 5}; 

if(data.Contains(variable)) 
{ 

} 
+0

Este realy obras, pero en mi humilde respuesta de pblasucci opinión es más elegante. –

2

Si está usando .NET 3.5 o posterior, entonces puede usar Contains:

if (new[] { 1, 2, 3, 4, 5 }.Contains(variable)) 
{ 
    // do something 
} 
1

Es bastante fácil juntar una extensión.

public static bool In<T>(this T value, params T[] items) where T : IEquatable<T> 
{ 
    foreach (var item in items) 
    { 
     if (value.Equals(item)) 
     { 
      return true; 
     } 
    } 
    return false; 
}