如果你有一個「1,2,3,1,5,7」字符串,你可以把它放在數組或散列表中,或者任何被認爲是最好的。如何比較數組中的值
你如何確定所有的價值都是一樣的?在上面的例子中,它會失敗,但如果你有「1,1,1」,那就是真的。
如果你有一個「1,2,3,1,5,7」字符串,你可以把它放在數組或散列表中,或者任何被認爲是最好的。如何比較數組中的值
你如何確定所有的價值都是一樣的?在上面的例子中,它會失敗,但如果你有「1,1,1」,那就是真的。
這可以很好地利用lambda表達式來完成。
對於數組,命名arr
:
var allSame = Array.TrueForAll(arr, x => x == arr[0]);
對於列表(List<T>
),命名爲lst
:
var allSame = lst.TrueForAll(x => x == lst[0]);
而對於可迭代(IEnumerable<T>
),命名爲col
:
var first = col.First();
var allSame = col.All(x => x == first);
請注意,這些方法不處理空數組/列表/迭代器。然而,這樣的支持是微不足道的。
遍歷每個值,將第一個值存儲在變量中,並將數組的其餘部分與該變量進行比較。即時失敗,你知道所有的價值是不一樣的。
不錯,我幾乎可以看到代碼! – Secko 2009-07-06 14:16:34
如何像...
string numArray = "1,1,1,1,1";
return numArrray.Split(',').Distinct().Count() <= 1;
Linq不是這個項目的選項不幸的 – Jon 2009-07-06 14:10:59
我想用List<T>.TrueForAll
將是一個華而不實的做法。
效率不高的簡單循環(因爲它總是進程,即使該結果可能是越早確定的所有項目),但:
if (new HashSet<string>(numbers.Split(',')).Count == 1) ...
哪裏是「請做我的功課」的標籤? – Sergio 2009-07-06 13:54:39
我覺得這個問題之前已經被問過了... – 2009-07-06 14:10:53