【问题标题】:What is C# equivalent of TSQL's "IN" operator? What are the ways to check if X exists in X,Y,Z in c#?TSQL 的“IN”运算符的 C# 等价物是什么?在c#中检查X,Y,Z中是否存在X的方法是什么?
【发布时间】:2015-11-19 05:23:05
【问题描述】:

在c#中有哪些方法可以检查X是否存在于X,Y,Z中? 例如:

X=5;

我想检查 X 的值是否与任何逗号分隔值匹配..

if(x in (2,5,12,14)

【问题讨论】:

    标签: c# asp.net .net linq


    【解决方案1】:
    new int[] { 2,5,12,14}.Contains(x);
    

    【讨论】:

    • 其实我想到了这个(我应该在我的问题中提到它,我的错误)。但我希望我能找到更方便的方法。即使是通过 Linq。
    • 不够方便?你想要什么?
    • 哈哈,它很方便。可以说我正在寻找替代品只是为了获得知识。 +1
    • 哦,我刚刚意识到我可以只用一行而不是两行来做到这一点。 if (new int[] { 2,5,12,14}.Contains(5))我会把你的帖子标记为答案。如果我没有得到更好的答案。(我不太可能得到)
    • 我不建议将内联用于频繁运行的代码,例如在循环中,因为它每次都会构造一个新数组,最好使用包含数组/列表的局部变量跨度>
    【解决方案2】:
    List<int> list = new List<int> { 1, 2, 3, 4, 5 };
    list.Contains(5);
    

    【讨论】:

      【解决方案3】:

      您可以使用 .Contains 方法。例如listItems.Contains(x)

      【讨论】:

        【解决方案4】:

        C# 中没有in 运算符,但您可以实现扩展方法以使代码更具可读性。

        public static class Ext
        {
            public static bool In<T>(this T val, params T[] values) where T : struct
            {
                return values.Contains(val);
            }
        }
        
        //usage: var exists = num.In(numbers);
        

        【讨论】:

          【解决方案5】:

          Linq.Contains()你在搜索什么

          // Create List with three elements.
          var list = new List<string>();
          list.Add("cat");
          list.Add("dog");
          list.Add("moth");
          
          // Search for this element.
          if (list.Contains("dog"))
          {
              Console.WriteLine("dog was found");
          }
          

          有两个方法Linq.Contains()方法和一个扩展Linq.Contains&lt;int&gt;

                  var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
                  // Use extension method.
          
                  var stp = new Stopwatch();
                  stp.Start();
                  bool a = list.Contains<int>(7);
                  stp.Stop();
                  Console.WriteLine("Time in extenstion method {0}", stp.Elapsed);
          
                  stp.Restart();
                  // Use instance method.
                  bool b = list.Contains(7);
                  stp.Stop();
                  Console.WriteLine("Time in normal method {0}", stp.Elapsed);
          

          性能基准:List 类型定义中的特定于 List 的版本,即 list.Contains(7); 更快。我用两个 Contains 方法测试了同一个 List。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-05-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多