2013-02-08 9 views
35

文字列の.net配列があるとします。私は文字列の配列は、「ABC」を含んでいるかどうかを確認したい場合はIEnumerableを作成する方法<string>。大文字と小文字は区別されませんか?

string[] strings = new string[] { "AbC", "123", "Xyz", "321" }; 

、私は真返す関数をしたいと仮定し、しかし

strings.Contains("ABC"); 

を書くことができればの大文字値文字列には "ABC"が含まれます。私は配列全体を大文字ことができますが、.Contains方法は、比較を指定するためのいくつかのオーバーロードがありますように見えますが、私は、構文で混乱しています。

どのように私はIEnumerable<string>.Contains()メソッドを使用することができますが、このロジックを実装しますか?

strings.Contains("ABC", StringComparer.InvariantCultureIgnoreCase) 

はまた、あなたが使用できるボックスにstrings comparerがある:

+1

私は、私は 'strings.select(S => s.ToUpper).Contains(「ABC」)を'書くことができることを知っていることを強調してみましょう、私はそれがなくて '.Contains'を使用して可能ですかどうかを知りたいのですが配列を大文字にする。 –

+1

NORあなたは理由のいずれかのケース[トルコの私の問題](http://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx/を変更する必要があります)。 –

答えて

70

使用すると、等値比較子を受け入れるEnumerable.Contains方法をオーバーロードされました。

1

私個人的にはこのようなもののために非常に便利であるこの男のLambdaComparer、のような:あなたが好むかを余儀なくされているいずれかのいくつかの理由で

var comparer = new LambdaComparer<string>(
    (lhs, rhs) => lhs.Equals(rhs, StringComparison.InvariantCultureIgnoreCase)); 

var seq = new[]{"a","b","c","d","e"}; 

Debug.Assert(seq.Contains("A", comparer)); 
関連する問題