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. 檢查列表中的所有項目是否是另一個列表中的項目之一
- 7. 檢查列是否在所有行上具有相同的值
- 8. 列表中的所有項目都是相同的?
- 9. 在列表中的所有索引處檢查是否相等
- 10. 檢查列表中的所有值是否相等
- 11. 檢查列表中的所有數字是否在序言中不相同
- 12. 檢查列表中的所有元素在方案中是否相同
- 13. 檢查列表<string>中是否存在相同的項目?
- 14. 檢查csv文件是否有相同的項目
- 15. 檢查列表中的所有項目是否包含(或者完全相同)字符串。
- 16. VB.NET:檢查列表項是否相等並具有相同的數
- 17. Scheme:如何檢查列表中的所有元素是否相同
- 18. Excel檢查所有工作表是否存在相同的值
- 19. 檢查兩個列表中的相同位置是否有相同的值
- 20. 如何檢查列表中的所有項目是否爲字符串
- 21. 如何檢查2D列表中的所有項目是否都一樣?
- 22. 檢查所有值的字符串列表項目同時
- 23. 檢查項目是否在列表中並刪除舊項目
- 24. 如何檢查C++/cli ref項目列表是否相等?
- 25. 檢查數組的列表是否具有相同的值
- 26. 如何檢查列中的所有元素是否具有相同的文本?
- 27. Python:如何有效地檢查項目是否在列表中?
- 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