我已使用IRepository
在存储库中存储subject
和score
对。现在,我试图弄清楚如何防止重复的主题名称被添加到该存储库。
我尝试了以下解决方案,使用一个语句来检查repositry是否已经contains
主题名称:
if (_repository.Count <= 5 && (!_repository.Collection.Contains(SelectedSubjectName)))
{
_repository.Add(new ScoreModel() {Subject = SelectedSubjectName, Points = SelectedPoints});
CalculateLeavingCertPoints();
}
但是我收到一个重载不匹配错误,说明:
错误1&#39; System.Collections.ObjectModel.Collection&lt; LC_Points.Model.ScoreModel&gt; .Contains(LC_Points.Model.ScoreModel)的最佳重载方法匹配具有一些无效参数
和
错误2参数1:无法转换为&#39; string&#39;到&#39; LC_Points.Model.ScoreModel&#39;
有没有人知道如何修复语句参数?
我可以看到SubjectName
是字符串类型,根据第二个错误不能作为参数传递。所以我尝试ScoreModel.Subject
,但编译器不允许这样做。任何建议表示赞赏。
这是ScoreModel
供参考:
答案 0 :(得分:1)
如果_repository.Collection是ScoreModel对象的集合,则不能使用字符串执行包含。您需要使用要避免重复的特定属性进行检查。
所以,替换这部分:
!_repository.Collection.Contains(SelectedSubjectName)
通过
_repository.Collection.All(s=>s.Subject != SelectedSubjectName)
如果所有现有主题与新主题名称不同,则为真。 我相信这就是你所追求的目标。