2009-07-06 61 views
2

如果你有一個「1,2,3,1,5,7」字符串,你可以把它放在數組或散列表中,或者任何被認爲是最好的。如何比較數組中的值

你如何確定所有的價值都是一樣的?在上面的例子中,它會失敗,但如果你有「1,1,1」,那就是真的。

+3

哪裏是「請做我的功課」的標籤? – Sergio 2009-07-06 13:54:39

+0

我覺得這個問題之前已經被問過了... – 2009-07-06 14:10:53

回答

8

這可以很好地利用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); 

請注意,這些方法不處理空數組/列表/迭代器。然而,這樣的支持是微不足道的。

6

遍歷每個值,將第一個值存儲在變量中,並將數組的其餘部分與該變量進行比較。即時失敗,你知道所有的價值是不一樣的。

+0

不錯,我幾乎可以看到代碼! – Secko 2009-07-06 14:16:34

5

如何像...

string numArray = "1,1,1,1,1"; 
return numArrray.Split(',').Distinct().Count() <= 1; 
+0

Linq不是這個項目的選項不幸的 – Jon 2009-07-06 14:10:59

1

效率不高的簡單循環(因爲它總是進程,即使該結果可能是越早確定的所有項目),但:

if (new HashSet<string>(numbers.Split(',')).Count == 1) ...