如何通过“名称”字段在汽车数组中比较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
});
}
}
}
答案 0 :(得分:2)
您可以使用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
});
}
答案 1 :(得分:1)
if (!cars.Any(car => car.Name.Equals(auto[0])))
cars.Add(new Tech()
{
Name = auto[0],
KM = 0
});
如果集合中有一个满足条件的元素,则 Any将返回true,条件为car.Name.Equals(auto[0])
。这就是为什么您可以使用!cars.Any(car => car.Name.Equals(auto[0]))
来查看集合中没有谓词适用的汽车的原因。