2010-04-29 21 views
7

Có ở nhà điều hành trong SQLC# tương tự cho sql trong điều hành

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

Có sintax tương tự trong C#, ý tôi là

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

Thực tế câu hỏi là, cách dễ dàng hơn để làm việc như vậy –

Trả lời

10

Có không phải là một trong những tốt nhưng bạn có thể viết nó cho mình như một phương pháp khuyến nông:

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

tôi đã không kiểm tra nó, nhưng nó phải là tốt.

CẬP NHẬT: Theo đề xuất của OP, tôi đã sửa một vài lỗi chính tả.

+0

wow, đây là thực sự mát mẻ Tôi đã sửa chữa nó một chút bool public static Trong (giá trị T này, params T [] mục) { items.Contains trở lại (giá trị); } –

+0

Cảm ơn. Vui mừng được giúp đỡ. – pblasucci

14

Bạn có thể có

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

if(data.Contains(variable)) 
{ 

} 
+0

Điều này thực sự hữu ích, nhưng trong câu trả lời khiêm tốn, ý kiến ​​của pblasucci là thanh lịch hơn. –

2

Nếu bạn đang sử dụng .NET 3.5 trở lên thì bạn có thể sử dụng Contains:

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

Thật dễ dàng để đặt cùng một tiện ích.

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