【问题标题】:find if an integer exists in a list of integers查找整数列表中是否存在整数
【发布时间】:2011-04-24 20:49:35
【问题描述】:

我有这个代码:

  List<T> apps = getApps();

        List<int> ids;

        List<SelectListItem> dropdown = apps.ConvertAll(c => new SelectListItem
        {
            Selected = ids.Contains(c.Id),
            Text = c.Name,
            Value = c.Id.ToString()
        }).ToList();


ids.Contains

即使数字匹配,似乎总是返回 false

有什么想法吗?

【问题讨论】:

  • 不,你就是这么干的。
  • mquander 是对的——也许你可以试试 List foo = new List(); 这样的小例子for (int i = 0; i
  • 我猜你在其他地方有错误。这种方法应该有效。
  • 就像 mquander 说的那样,你就是这样做的。肯定有其他问题。
  • List ids 未初始化为任何内容。尝试添加一些已知值 ~ var ids = new List() {2,4,6,8};

标签: c# arrays integer


【解决方案1】:

如果你只需要一个真/假结果

bool isInList = intList.IndexOf(intVariable) != -1;

如果 intVariable 在 List 中不存在,它将返回 -1

【讨论】:

  • IndexOf 从零开始。那应该是&gt;= 0 :)
  • 或者真的应该只检查!= -1,因为-1返回值被定义为否定结果。
【解决方案2】:

只要您的列表使用值初始化并且该值实际存在于列表中,那么 Contains 应该返回 true。

我尝试了以下方法:

var list = new List<int> {1,2,3,4,5};
var intVar = 4;
var exists = list.Contains(intVar);

并且存在确实设置为true。

【讨论】:

  • OP 更新了您回答的问题。他的 ids 列表似乎没有被初始化。那不应该是编译器捕获吗?
  • 是的。未初始化的列表会导致编译器错误。但如果列表是在类级别定义的,那么它将被初始化为 null 并且编译器会很高兴。
【解决方案3】:

你的做法是正确的。它适用于该代码:x 是真的。 可能你在其他地方犯了错误。

List<int> ints = new List<int>( new[] {1,5,7}); // 1

List<int> intlist=new List<int>() { 0,2,3,4,1}; // 2

var i = 5;
var x = ints.Contains(i);   // return true or false

【讨论】:

    【解决方案4】:

    您应该引用 Selected 而不是 ids.Contains 作为最后一行。

    我刚刚意识到这是来自 OP 的格式问题。无论如何,您都应该引用 Selected 中的值。我建议添加一些 Console.WriteLine 调用,以准确查看每行打印的内容以及每个值是什么。

    更新后: ids 是一个空列表,这怎么不抛出 NullReferenceException?因为它从未在该代码块中初始化

    【讨论】:

      【解决方案5】:

      这是一个扩展方法,这允许像 SQL IN 命令一样编码。

      public static bool In<T>(this T o, params T[] values)
      {
          if (values == null) return false;
      
          return values.Contains(o);
      }
      public static bool In<T>(this T o, IEnumerable<T> values)
      {
          if (values == null) return false;
      
          return values.Contains(o);
      }
      

      这允许这样的事情:

      List<int> ints = new List<int>( new[] {1,5,7});
      int i = 5;
      bool isIn = i.In(ints);
      

      或者:

      int i = 5;
      bool isIn = i.In(1,2,3,4,5);
      

      【讨论】:

        【解决方案6】:
        bool vExist = false;
        int vSelectValue = 1;
        
        List<int> vList = new List<int>();
        vList.Add(1);
        vList.Add(2);
        
        IEnumerable vRes = (from n in vListwhere n == vSelectValue);
        if (vRes.Count > 0) {
            vExist = true;
        }
        

        【讨论】:

          【解决方案7】:

          最好的和完整的代码在这里:

          NumbersList.Exists(p => p.Equals(Input)
          

          用途:

          List<int> NumbersList = new List<int>();
          private void button1_Click(object sender, EventArgs e)
          {
              int Input = Convert.ToInt32(textBox1.Text);
              if (!NumbersList.Exists(p => p.Equals(Input)))
              {
                 NumbersList.Add(Input);
              }
              else
              {
                  MessageBox.Show("The number entered is in the list","Error");
              }
          }
          

          【讨论】:

            【解决方案8】:
            string name= "abc";
            IList<string> strList = new List<string>() { "abc",  "def", "ghi", "jkl", "mno" };
            if (strList.Contains(name))
            {
              Console.WriteLine("Got It");
            }
            
            /////////////////   OR ////////////////////////
            
            IList<int> num = new List<int>();
            num.Add(10);
            num.Add(20);
            num.Add(30);
            num.Add(40);
            
            Console.WriteLine(num.Count);   // to count the total numbers in the list
            
            if(num.Contains(20)) {
                Console.WriteLine("Got It");    // if condition to find the number from list
            }
            

            【讨论】:

              猜你喜欢
              • 2021-08-08
              • 1970-01-01
              • 1970-01-01
              • 2014-09-25
              • 1970-01-01
              • 1970-01-01
              • 2023-03-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多