Skip to main content
 首页 » 编程设计

c#之包含二维集合中的方法

2024年02月25日33pander-it

如何通过“Name”字段比较 cars 数组中的 auto[0]? 字符串 if (!cars.Contains(auto[0])) 当然不正确。

 
namespace AutoSqare 
{ 
    class CarsInfo 
    { 
        static List<Tech> cars = new List<Tech>(); 
        public class Tech 
        { 
            public string Name { get; set; } 
            public double KM { get; set; } 
        } 
        static void Main() 
        { 
            string[] auto = new string[]{"Lada Vesta"}; 
            cars.Add(new Tech() 
            { 
                    Name = "Lada Vesta Sport", 
                    KM = 190 
            }); 
 
            if (!cars.Contains(auto[0])) 
            cars.Add(new Tech() 
            { 
                    Name = auto[0], 
                    KM = 0 
            }); 
 
        } 
    } 
} 

请您参考如下方法:

您可以使用 LINQ 的 Any()方法:

if (!cars.Any(c => c.Name == auto[0])) 

但是您似乎打算只使用唯一 汽车名称,所以使用 Dictionary<string,Tech>似乎比 List<Tech> 好:

static Dictionary<string, Tech> cars = new Dictionary<string,Tech>(); 
 
static void Main() 
{ 
    string[] auto = new string[]{"Lada Vesta"}; // <-- you also had a syntax error here 
    Tech tech = new Tech() 
        { 
            Name = "Lada Vesta Sport", 
            KM = 190 
        }; 
    cars.Add(tech.Name, tech);         
 
    if (!cars.ContainsKey(auto[0]))  // <--- Use ContainsKey here 
        cars.Add(auto[0], new Tech() 
            { 
                Name = auto[0], 
                KM = 0 
            }); 
}