2009-07-06 4 views
2

文字列が "1,2,3,1,5,7"の場合は、これを配列またはハッシュテーブルなどに配置することができます。配列の値を比較する方法

どのようにすべての値が同じであると判断しますか?上の例では失敗するでしょうが、もしあなたが "1,1,1"を持っていればそれは本当でしょう。

+3

「私の宿題をしてください」タグのですか? – Sergio

+0

私はこの質問が以前に尋ねられたと思います... –

答えて

8

これは、ラムダ式を使用してうまく行うことができます。

var allSame = lst.TrueForAll(x => x == lst[0]); 

そして(IEnumerable<T>)反復可能なため、colの名前:lst名前付きリスト(List<T>)については、

var allSame = Array.TrueForAll(arr, x => x == arr[0]); 

var first = col.First(); 
var allSame = col.All(x => x == first); 
arrという名前の配列については、

ただし、これらのメソッドは空の配列/リスト/ iterablesを処理しないことに注意してください。しかし、そのようなサポートは簡単に追加することができます。

+0

ほとんど、空の配列は扱えません。 –

+0

@Martin:それは要件であるかどうかは疑問ではありません。もちろん、サポートするのは非常に簡単です。 – Noldorin

+0

残念ながら、Linqはこのプロジェクトのオプションではありません – Jon

6

各値を繰り返し、最初の値を変数に格納し、残りの配列をその変数と比較します。即座に失敗すると、すべての値が同じではないことがわかります。以下のような何かについて

+0

いいです、私はほとんどコードを見ることができます! – Secko

5

どのように...

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

残念ながら、Linqはこのプロジェクトのオプションではありません – Jon

1

ない単純なループほど効率的で(結果が早く決めることができたとしても、それは常にすべての項目を処理して)、しかし:

if (new HashSet<string>(numbers.Split(',')).Count == 1) ... 
関連する問題