c# Hashset< string>Contains错误地返回false

本文关键字:错误 返回 false Contains Hashset string | 更新日期: 2023-09-27 18:07:15

我试图比较从数据库中填充的字符串的哈希集对对象的字符串属性。我知道它存在于哈希集中,但它总是返回false。

奇怪的是,我写了一个测试程序,它的行为符合我的预期。见下文

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    class Program
    {
    static void Main(string[] args)
    {
        string test = "A";
        HashSet<String>[] array = new HashSet<string>[1]; 
        array[0] = new HashSet<string>();
       Boolean isA = true;
       Boolean isB = false;
       array[0].Add("A");
        if (array[0].Contains(test) && isA || isB)
            if (test.Equals("A")) {
                Console.WriteLine("A");
            }
            return;
    }
  }
}

另一方面,这没有。我需要为此编写一个自定义比较器吗?这不是自定义对象,我只是比较字符串。我知道字符串包含在哈希集中。

private readonly HashSet<string>[] cars = new HashSet<string>[5];
 for (int i = 0; i < cars.Length; i++)
        cars[i] = new HashSet<string>();
  foreach (DataRow dr in dt.Rows)
   {
        switch (dr[0].ToString())
         {
            case "1": 
              cars[0].Add(dr[1].ToString());
                            break;
          }
    }
bool test = cars[0].Contains("A"); //Always returns false

c# Hashset< string>Contains错误地返回false

尝试添加cars[0].Add(dr[1].ToString().Trim().ToUpper())并检查