如何防止重复项目被添加到IRepository
本文关键字:添加 IRepository 项目 何防止 | 更新日期: 2023-09-27 18:20:05
我使用了IRepository
将subject
和score
对存储在存储库中。现在,我正试图找出如何防止重复的主题名称被添加到存储库中。
我尝试了以下解决方案,使用一条语句来检查存储库是否已经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
如果_repository.Collection是ScoreModel对象的集合,则不能使用字符串执行Contains。你需要对你想避免重复的特定属性进行检查。
因此,更换此部件:
!_repository.Collection.Contains(SelectedSubjectName)
通过
_repository.Collection.All(s=>s.Subject != SelectedSubjectName)
如果所有现有主题都与新主题名称不同,则会出现这种情况。我相信这就是你想要的。