web-dev-qa-db-ja.com

C#で文字列key-typeを使用した大文字と小文字を区別しない辞書

Dictionary<String,...>がある場合、ContainsKeyのようなメソッドを大文字と小文字を区別しないようにすることはできますか?

これは関連しているように見えましたが、私はそれを正しく理解していませんでした: c#辞書:宣言を通じてキーの大文字と小文字を区別しません

130
Mr. Boy

これは関連しているように見えましたが、私はそれを正しく理解していませんでした:c#辞書:キーを大文字小文字を区別せずに宣言する

それは確かに関連しています。解決策は、ディクショナリインスタンスに標準の文字列比較方法(大文字と小文字を区別する)を使用せず、大文字と小文字を区別しない方法を使用するように指示することです。これは 適切なコンストラクター を使用して行われます:

var dict = new Dictionary<string, YourClass>(
        StringComparer.InvariantCultureIgnoreCase);

コンストラクタは、キーを比較する方法を辞書に指示する IEqualityComparer を想定しています。

StringComparer.InvariantCultureIgnoreCase は、大文字と小文字を区別しない方法で文字列を比較するIEqualityComparerインスタンスを提供します。

263
Konrad Rudolph
var myDic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
myDic.Add("HeLlo", "hi");

if (myDic.ContainsKey("hello"))
    Console.WriteLine(myDic["hello"]);
19
Steve

サードパーティまたは外部dllから取得した辞書を扱う可能性はほとんどありません。 linqを使用する

YourDictionary.Any(i => i.KeyName.ToLower().Contains("yourstring")))

10
Kurkula