2010-04-29 9 views
7

C'è in operatore in SQLC# analogico per SQL in operatore

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

C'è simile sintassi in C#, voglio dire

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

actualy la domanda è: qual è il modo più semplice per fare una cosa del genere –

risposta

10

Non c'è una buona, ma si può scrivere se stessi come un metodo di estensione:

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 */ } 

non ho ancora testato, ma dovrebbe essere bene.

AGGIORNAMENTO: Come suggerito da OP, ho corretto alcuni refusi.

+0

wow, questo è davvero fresco ho corretto un po ' bool public static In (questo valore T, PARAMS T [] articoli) { items.Contains di ritorno (valore); } –

+0

Grazie. Felice di aiutare. – pblasucci

14

Si può avere

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

if(data.Contains(variable)) 
{ 

} 
+0

questo funziona davvero, ma in risposta il mio modesto parere di pblasucci è più elegante. –

2

Se utilizzando .NET 3.5 o successivo, è possibile utilizzare Contains:

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

È abbastanza facile mettere insieme un'estensione.

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; 
}