如何防止将重复项目添加到 IRepository?
How to prevent duplicate items from being added to an IRepository?
我使用 IRepository
将 subject
和 score
对存储在存储库中。现在我想弄清楚如何防止将重复的主题名称添加到该存储库中。
我尝试了以下解决方案,使用语句检查存储库是否已经 contains
主题名称:
if (_repository.Count <= 5 && (!_repository.Collection.Contains(SelectedSubjectName)))
{
_repository.Add(new ScoreModel() {Subject = SelectedSubjectName, Points = SelectedPoints});
CalculateLeavingCertPoints();
}
但我收到一个过载不匹配错误,指出:
Error 1 The best overloaded method match for 'System.Collections.ObjectModel.Collection<LC_Points.Model.ScoreModel>.Contains(LC_Points.Model.ScoreModel) has some invalid arguments
和
Error 2 Argument 1: cannot convert from 'string' to 'LC_Points.Model.ScoreModel'
有没有人知道如何修复语句参数?
根据第二个错误,我看到SubjectName
是字符串类型,不能作为参数传递。所以我尝试了 ScoreModel.Subject
但编译器不允许这样做。任何建议表示赞赏。
这是ScoreModel
供参考:
如果 _repository.Collection 是 ScoreModel 对象的集合,则不能对字符串执行 Contains。您需要对要避免重复的特定 属性 进行检查。
所以,替换这部分:
!_repository.Collection.Contains(SelectedSubjectName)
来自
_repository.Collection.All(s=>s.Subject != SelectedSubjectName)
如果所有现有主题都与新主题名称不同,则为真。
我相信这就是你所追求的。
我使用 IRepository
将 subject
和 score
对存储在存储库中。现在我想弄清楚如何防止将重复的主题名称添加到该存储库中。
我尝试了以下解决方案,使用语句检查存储库是否已经 contains
主题名称:
if (_repository.Count <= 5 && (!_repository.Collection.Contains(SelectedSubjectName)))
{
_repository.Add(new ScoreModel() {Subject = SelectedSubjectName, Points = SelectedPoints});
CalculateLeavingCertPoints();
}
但我收到一个过载不匹配错误,指出:
Error 1 The best overloaded method match for 'System.Collections.ObjectModel.Collection<LC_Points.Model.ScoreModel>.Contains(LC_Points.Model.ScoreModel) has some invalid arguments
和
Error 2 Argument 1: cannot convert from 'string' to 'LC_Points.Model.ScoreModel'
有没有人知道如何修复语句参数?
根据第二个错误,我看到SubjectName
是字符串类型,不能作为参数传递。所以我尝试了 ScoreModel.Subject
但编译器不允许这样做。任何建议表示赞赏。
这是ScoreModel
供参考:
如果 _repository.Collection 是 ScoreModel 对象的集合,则不能对字符串执行 Contains。您需要对要避免重复的特定 属性 进行检查。
所以,替换这部分:
!_repository.Collection.Contains(SelectedSubjectName)
来自
_repository.Collection.All(s=>s.Subject != SelectedSubjectName)
如果所有现有主题都与新主题名称不同,则为真。 我相信这就是你所追求的。