我用 C# 制作了一个列表,我想进行测试以查看 Id 字段的所有值是否都是唯一的。
public static List<RestaurantReview> _reviews = new List<RestaurantReview>
{
new RestaurantReview
{
Id = 1,
Name = "McDonalds",
},
new RestaurantReview
{
Id = 2,
Name = "Burger King",
},
}
因为我做了一些调试,我发现它正在列表中运行,但我没有得到正确的测试值。有人可以解释一下我在这里做错了什么吗?
[TestMethod()]
public void CheckReviewIds()
{
var FirstReview = ReviewsController._reviews.First();
bool AllUniqueIds = ReviewsController._reviews.All(s => s.Id == FirstReview.Id);
Assert.IsFalse(AllUniqueIds);
}
提前致谢。
另一种在时间方面具有更好性能的解决方案(特别是如果您拥有的数据集很大)是使用HashSet https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx像这样:
bool IsAllUnique<T>(IEnumerable<T> values)
{
HashSet<T> hash_set = new HashSet<T>();
return values.All(x => hash_set.Add(x));
}
然后你可以像这样使用它:
bool unique = IsAllUnique(ReviewsController._reviews.Select(x => x.Id));
该解决方案取决于以下事实:HashSet.Add
如果我们尝试添加的值已经存在,将返回 false。
该解决方案具有更好性能的原因之一是,如果检测到重复项目,它不必遍历列表中的其余项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)