1.这是代码
private List<Model1> _projectVariables { get; set; } = new List<Model1>();
public void AddProject(Model1 project) // i want to perform validation
{
_projectVariables.Add(project); //this method add user input to the list
}
我应该在上面的代码中写些什么,这样列表中就不允许重复数据了。我该怎么办???
在添加之前,使用Contains
检查该对象是否已存在于列表中
private List<Model1> _projectVariables { get; set; } = new List<Model1>();
public void AddProject(Model1 project) // i want to perform validation
{
if (!_projectVariables.Contains(project)){
_projectVariables.Add(project);
}
}
另一个选项是使用哈希集,它允许您向集合中添加唯一的值。因此,如果您有一个规则,即不向集合中添加两个相同的对象(就像您的情况一样(,那么Set是一个不错的选择。
private HashSet<Model1> _projectVariables { get; set; } = new HashSet<Model1>();
public void AddProject(Model1 project) // i want to perform validation
{
_projectVariables.Add(project);
}
如果你想检查列表中是否已经存在引用内存中不同对象的两个不同对象,你可以通过Any
进行检查,如下所示:
Any(x => x.someProp1 == project.someProp1 && x.someProp2 == project.someProp2 )