在列表中找到对象元素

时间:2019-05-22 14:19:43

标签: c#

我有一个数据文件,其中填充了Dog {名称,分类,国家/地区,使用}行。我做了一个,解释了什么是狗,并做了一个列表来存储它们。 一切都无需我现在添加的检查。

我想检查列表中是否已存在Dog名称,因此我添加了此条件:

if(Dog.IndexOf(Fields[0]) == -1)

但是我有错误

  

参数1:在Dogs.Program.Dogs中无法从“字符串”转换

这是代码的一部分:

public class Dogs
    {
        public string Name { get; set; }
        public string Classification { get; set; }
        public string Country { get; set; }
        public string Use { get; set; }
    }

    static void Main(string[] args)
    {
        List<Dogs> Dog = new List<Dogs>();

        try
        {
            bool Erreur = false;
            using (StreamReader File = new StreamReader("../../Data/dogs.txt", Encoding.UTF8, true))
            {
                while (!Fichier.EndOfStream)
                {
                    string Line = File.ReadLine();
                    if (!String.IsNullOrWhiteSpace(Line))
                    {
                        string[] Fields = Line.Split('\t');

                        if (Fields.Length == 4)
                        {
                            if(Dogs.IndexOf(Fields[0]) == -1)
                            {
                                Dogs AddDog = new Dogs();
                                AddDog.Name = Fields[0];
                                AddDog.Classification = Fields[1];
                                AddDog.Country = Fields[2];
                                AddDog.Use = Fields[3];
                                Chien.Add(AddDog);
                            }
...

如何检查此列表中存储的对象的“名称”属性?

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ来确定Dogs列表中是否有一个NameFields[0]相等的Dog对象:

if (!Dog.Any(x => x.Name == Fields[0]))
{
    Dogs AddDog = new Dogs();
    ...