代码之家  ›  专栏  ›  技术社区  ›  er-v

C模拟SQL输入运算符

c#
  •  7
  • er-v  · 技术社区  · 16 年前

    SQL中有in运算符

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

    我的意思是,C中有类似的Sintax吗?

    if(variable in (1, 2, 3, 4, 5)){
    }
    
    5 回复  |  直到 16 年前
        1
  •  10
  •   pblasucci    16 年前

    没有一个好的方法,但您可以自己编写它作为扩展方法:

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

    我没有测试过,但应该是好的。

    更新:按照OP的建议,我改正了一些错误。

        2
  •  14
  •   Amitabh    16 年前

    你可以有

    int[] data = {1, 2, 3, 4, 5};
    
    if(data.Contains(variable))
    {
    
    }
    
        3
  •  2
  •   LukeH    16 年前

    如果您使用.NET 3.5或更高版本,则可以使用 Contains :

    if (new[] { 1, 2, 3, 4, 5 }.Contains(variable))
    {
         // do something
    }
    
        4
  •  1
  •   Matthew Flaschen    16 年前

    用 Enumerable.Contains

    new int[]{1,2,3,4,5}.Contains(variable)
    
        5
  •  1
  •   ChaosPandion    16 年前

    把一个扩展放在一起很容易。

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