gpt4 book ai didi

c# 获取 HashSet 的特定元素

转载 作者:行者123 更新时间:2023-11-30 19:19:46 25 4
gpt4 key购买 nike

我只想获取 HashSet 中包含特定字符串的元素。我试过下面的代码,但我没有得到任何东西......就像没有匹配一样。但这不会发生,因为未知计数器始终为 0。

if (!IsbnAuth.Contains(RecTitle))
{
Unknown++;
}
else
{
for (int i = 0; i < IsbnAuth.Count(); i++)
{
if (IsbnAuth.ElementAt(i).Contains(RecTitle))
{
System.Console.WriteLine(IsbnAuth.ElementAt(i));
//isbn = IsbnAuth.ElementAt(i).Substring(0, IsbnAuth.ElementAt(i).IndexOf("\t"));
isbn = IsbnAuth.ElementAt(i).Split(' ')[0];
break;
}
}
}

有什么想法吗?问题不在 RecTitle 原因,即使它只是一个字符,结果也是一样的。IsbnAuth 是哈希集。

编辑:IsbnAuth 声明

    HashSet<String> IsbnAuth = new HashSet<String>();
foreach (String line in IsbnAuthors)
{
IsbnAuth.Add(line.Trim());
}
System.Console.WriteLine(IsbnAuth.Count);

最佳答案

这是第一个问题:

if (!IsbnAuth.Contains(RecTitle))
{
Unknown++;
}

检查集合是否包含整个 字符串作为一个完整的元素。听起来好像没有。

我怀疑你真的想要:

bool found = false;
foreach (String element in IsbnAuth)
{
if (element.Contains(RecTitle))
{
isbn = element.Split(' ')[0];
found = true;
break;
}
}
if (!found)
{
Unknown++;
}

或者更好:

string isbn = IsbnAuth.Where(x => x.Contains(RecTitle))
.Select(x => x.Split(' ')[0])
.FirstOrDefault();
if (isbn == null)
{
Unknown++;
}

值得注意的是,HashSet 的顺序基本上是不可预测的 - 因此,如果这里有多个匹配项,您将得到一个任意结果。这真的是你想要的吗?

关于c# 获取 HashSet 的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com