39
A
回答
67
像这样:
if (list.Distinct().Skip(1).Any())
或者
if (list.Any(o => o != list[0]))
(这可能更快)
1
VB.NET版本:
If list.Distinct().Skip(1).Any() Then
或者
If list.Any(Function(d) d <> list(0)) Then
4
我创建主要用于可读性上任何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;
}
0
这是一种选择,也:
if (list.TrueForAll(i => i.Equals(list.FirstOrDefault())))
它比if (list.Distinct().Skip(1).Any())
更快,因为 if (list.Any(o => o != list[0]))
,但差别也执行是不重要的,所以我建议使用更可读的。
相关问题
- 1. 检查所有项目是否具有相同的类别
- 2. 检查列表中的两个项目是否相同?
- 3. 如何测试列中的所有项目是否相同
- 4. 列表中的所有项目都是相同的?
- 5. 在列表中的所有索引处检查是否相等
- 6. 检查csv文件是否有相同的项目
- 7. 检查列表中的所有项目是否包含(或者完全相同)字符串。
- 8. Scheme:如何检查列表中的所有元素是否相同
- 9. 检查两个列表中的相同位置是否有相同的值
- 10. 如何检查2D列表中的所有项目是否都一样?
- 11. 检查项目是否在列表中并删除旧项目
- 12. 检查数组的列表是否具有相同的值
- 13. 如何测试数组中的所有项目是否相同?
- 14. 如何检查数组中的所有值是否相同?
- 15. 检查数组中的所有值是否相同
- 16. 检查列表中的项目是否存在于字典中
- 17. vba检查下拉列表中的项目是否被选中?
- 18. 检查列表中的某些元素是否相同
- 19. 如何检查列表中的两个数字是否相同
- 20. 检查是否有列表
- 21. Excel中,检查每列是否有相同数量的字符
- 22. 检查mysql中两列是否有相同的数据行
- 23. 检查列表项目<T>是否有效
- 24. 快速检查列表中的所有子项目
- 25. 通过选中的列表框并检查所有项目C#
- 26. 如何检查列表中的所有项目是否在另一个列表中?
- 27. 检查所有库和DLL是否来自相同的构建?
- 28. 简单的方法来检查项目是否在列表中?
- 29. 检查是否选择了下拉列表中的项目
- 30. 检查网页列表中的项目是否缩进
使用“全部”而不是“任何”可能更容易阅读。在无法执行的情况下,您可能需要使用First()而不是[0](IEnumerable)。 if(list.All(o => o == list.First())){...} – 2014-09-08 21:00:57
'list.Distinct()。Skip(1).Any()'与list.Distinct ).Count!= 1'对吗? – 2016-09-17 19:15:49
@GraemeWicksted如果找到一个不匹配的项目,那么Any()的整个点就会更快。然后你停止评估清单。虽然是'!(list.Any(o => o!= list [0]))',但如果没有与第一个不同的项目 - 如果它们全部相同 – 2016-09-17 19:21:44