检查列表中的所有项目是否相同

我有一个列表(date时间)项目。 如何检查所有项目是否与LINQ查询相同? 在任何时候,列表中可能有1个,2个,20个,50个或100个项目。

谢谢

喜欢这个:

if (list.Distinct().Skip(1).Any()) 

要么

 if (list.Any(o => o != list[0])) 

(这可能更快)

我创build了简单的扩展方法,主要是为了在任何IEnumerable上工作的可读性。

 if (items.AreAllSame()) ... 

和方法实现:

  /// <summary> /// Checks whether all items in the enumerable are same (Uses <see cref="object.Equals(object)" /> to check for equality) /// </summary> /// <typeparam name="T"></typeparam> /// <param name="enumerable">The enumerable.</param> /// <returns> /// Returns true if there is 0 or 1 item in the enumerable or if all items in the enumerable are same (equal to /// each other) otherwise false. /// </returns> public static bool AreAllSame<T>(this IEnumerable<T> enumerable) { if (enumerable == null) throw new ArgumentNullException(nameof(enumerable)); using (var enumerator = enumerable.GetEnumerator()) { var toCompare = default(T); if (enumerator.MoveNext()) { toCompare = enumerator.Current; } while (enumerator.MoveNext()) { if (toCompare != null && !toCompare.Equals(enumerator.Current)) { return false; } } } return true; } 

VB.NET版本:

 If list.Distinct().Skip(1).Any() Then 

要么

 If list.Any(Function(d) d <> list(0)) Then