如何防止重复项目被添加到IRepository

本文关键字:添加 IRepository 项目 何防止 | 更新日期: 2023-09-27 18:20:05

我使用了IRepositorysubjectscore对存储在存储库中。现在,我正试图找出如何防止重复的主题名称被添加到存储库中。

我尝试了以下解决方案,使用一条语句来检查存储库是否已经contains主题名称:

if (_repository.Count <= 5 && (!_repository.Collection.Contains(SelectedSubjectName))) 
{
    _repository.Add(new ScoreModel() {Subject = SelectedSubjectName, Points = SelectedPoints});
    CalculateLeavingCertPoints();
}

但我收到一个过载不匹配错误,说明:

错误1"System.Collections.ObjectModel.Collection<"的最佳重载方法匹配;LC_Points.Model.ScoreModel>.Contains(LC_Points.Model.ScoreModel)具有一些无效参数

错误2参数1:无法从"string"转换为"LC_Points.Model.ScoreModel"

有人知道如何修复语句参数吗?

我可以看到SubjectName是字符串类型,根据第二个错误,它不能作为参数传递。所以我尝试了ScoreModel.Subject,但编译器不允许这样做。如有任何建议,不胜感激。

这是供参考的ScoreModel

http://hastebin.com/emagojojug.vala

如何防止重复项目被添加到IRepository

如果_repository.Collection是ScoreModel对象的集合,则不能使用字符串执行Contains。你需要对你想避免重复的特定属性进行检查。

因此,更换此部件:

!_repository.Collection.Contains(SelectedSubjectName)

通过

_repository.Collection.All(s=>s.Subject != SelectedSubjectName)

如果所有现有主题都与新主题名称不同,则会出现这种情况。我相信这就是你想要的。