可能重复:
我需要检查此列表中的所有项是否相同,如果相同则返回true,否则返回false。
我可以使用LINQ吗?
可能重复:
检查列表中的所有项目是否相同
我有一个列表:
{string, string, string, string}
我需要检查此列表中的所有项是否相同,如果相同则返回true,否则返回false。
我可以使用LINQ吗?
可能重复:
检查列表中的所有项目是否相同
我有一个列表:
{string, string, string, string}
var allAreSame = list.All(x => x == list.First());
var allAreSame = list.Distinct().Count() == 1;
var allAreSame = list.Count == 0 || list.All(x => x == list[0]);
list.Distinct().Count() == 1;
而不是 list.All(current => current == list.First())
,至少从可读性的角度来看。 - Arman string[] s = { "same", "same", "same" };
if (s.Where(x => x == s[0]).Count() == s.Length)
{
return true;
}
var hasIdenticalItems = list.Count() <= 1 || list.Distinct().Count() == 1;
list.First()
,因此实际上列表被遍历两次? - David Clarkelist
只是一个已经实例化的集合,比如列表或数组:由于list.First
返回的是第一个元素,它不会遍历整个列表,因此:不,列表只被遍历一次。更一般地说,你是正确的:如果list
是一个未实例化的可枚举对象,每次调用First
都需要执行所有的代码(例如访问数据库或执行复杂的 Where 或 OrderBy 语句)才能得到至少第一个元素。在这种情况下,最好调用list.First
一次并存储结果。 - Daniel Hilgarth