0

我已经使用 anIRepository将 asubjectscorepair 存储在存储库中。现在我试图弄清楚如何防止重复的主题名称被添加到该存储库中。

我使用语句尝试了以下解决方案来检查存储库是否已经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:无法从“字符串”转换为“LC_Points.Model.ScoreModel”

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

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

这是ScoreModel供参考:

http://hastebin.com/emagojojug.vala

4

1 回答 1

1

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

所以,替换这部分:

!_repository.Collection.Contains(SelectedSubjectName)

经过

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

如果所有现有主题都与新主题名称不同,这将是正确的。我相信这就是你所追求的。

于 2015-10-31T17:30:32.513 回答