gpt4 book ai didi

c# - 使用C#比较用户输入的字符串是否存在于列表中

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

我正在尝试比较用户输入的字符串是否存在于列表中,如果存在我想将其从列表中删除。

我收到一个错误:

Argument 1: cannot convert from 'project.MainClass.Artical' to 'string'

我知道我得到它是因为我正在尝试将字符串与列表进行比较。

我有结构:

struct Artical {
public string name;
public float price;
public double weight;
}

和方法:

static void DeleteArtical()
{
Artical k = new Artical();

Console.WriteLine("Enter name you want to delete: ");
k.name = Console.ReadLine();

List < Artical > articals = new List < Artical > ();
using(StreamWriter sw = File.AppendText((@ "../../dat.txt"))) {
if (articals.Exists(x => string.Equals(x, k.name, StringComparison.OrdinalIgnoreCase))) {
Console.WriteLine("Done !!");
artikli.Remove(k);
}

}
}

x 带有下划线,给我上面提到的错误。

最佳答案

错误来自于您试图比较 Artical 类型的对象这一点用string . x在您的 lambda 表达式中代表 List<Artical> 中的一个元素所以你需要访问属性 name与它,因为这是你想要比较的:

if (articals.Exists(x => string.Equals(x.name, k.name, StringComparison.OrdinalIgnoreCase)))

请注意,Remove :

Removes the first occurrence of a specific object from the List

此外,您需要确保比较对象中的所有其他值(priceweight)必须与您要查找的值匹配,否则该项目将不会被删除!

编辑:

你可以做的是使用 FirstOrDefault 提取你正在寻找的结构。 .

这个方法:

Returns the first element of the sequence that satisfies a condition or a default value if no such element is found.

默认值是一个空结构,每个属性都有默认值。知道这一点后,您可以通过检查是否 name 来检查您的查找过程是否成功。有一个值(value)。如果您成功找到该项目,您现在可以使用完全相同的对象将其从列表中删除:

Artical objectForRemoval = articals.FirstOrDefault(x => string.Equals(x.name, k.name, StringComparison.OrdinalIgnoreCase));

if (!String.IsNullOrWhiteSpace(objectForRemoval.name))
{
Console.WriteLine("Done !!");
articals.Remove(objectForRemoval);
}

关于c# - 使用C#比较用户输入的字符串是否存在于列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748136/

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