Я пытаюсь сравнить Hashset строк, заполненных из базы данных, от свойства string от объекта. Я знаю, что он существует в hashset, но он всегда возвращает false.C# Hashset <string> Содержит неверно возвращает 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
Вы добавляете '1' и задаетесь вопросом, почему' A' не найден? Что говорит отладчик в HashSet? –
Я знаю, что в хэш-наборе существует «А». Отладчик подтверждает это. – Hardrock302
Затем укажите точный код, точный ввод, точное содержимое. Если ваша попытка в [mcve] не показывает ошибки, ошибка, скорее всего, находится в другом месте –