辞書に追加したいテキストファイルの行があります。初めて辞書を使用しています。開始行を追加しているときにOkでしたが、突然エラーが発生しました。
同じキーを持つアイテムが既に追加されています
ここに私のコードには、変更できない重複キーがあります。ここに私のコードはC#です
Dictionary<string, string> previousLines = new Dictionary<string, string> { };
previousLines.Add(dialedno, line);
ここで、dialednoはキーであり、lineはテキストファイルの行です。キーに基づいて特定の行を取得するコードを次に示します。
string tansferOrginExt = previousLines[dialedno];
したがって、私の懸念は、可能であればディクショナリに重複キーを追加できるようにする方法であり、そうでない場合は同様の機能を取得する方法です。
辞書に重複キーを追加する方法
それは不可能。すべてのキーは一意である必要があります。 _Dictionary<TKey, TValue>
_ 実装:
A _
Dictionary<TKey, TValue>
_のすべてのキーは、辞書の等値比較子に従って一意である必要があります。
可能な解決策-文字列のコレクションを値として保持することができます(つまり、_Dictionary<string, List<string>>
_を使用します)、または(より良い)辞書の代わりに _Lookup<TKey, TValue>
_ を使用できます。
重複キーをチェックし、辞書から以前の値を削除する方法は?
previousLines.ContainsKey(dialedno)
を使用してキーが存在するかどうかを確認できますが、常に最後の行を保持する場合は、キーの辞書を置換するか、辞書にない場合は新しいキーを追加します。
_previousLines[dialedno] = line;
_
キーと値のペアのリストを使用できます
List<KeyValuePair<string, string>> myduplicateLovingDictionary= new List<KeyValuePair<string, string>>();
KeyValuePair<string,string> myItem = new KeyValuePair<string,string>(dialedno, line);
myduplicateLovingDictionary.Add(myItem);
例:
class Program
{
private static List<KeyValuePair<string, int>> d = new List<KeyValuePair<string, int>>();
static void Main(string[] args)
{
d.Add(new KeyValuePair<string, int>("joe", 100));
d.Add(new KeyValuePair<string, int>("joe", 200));
d.Add(new KeyValuePair<string, int>("jim", 100));
var result = d.Where(x => x.Key == "joe");
foreach(var q in result)
Console.WriteLine(q.Value );
Console.ReadLine();
}
}
List< KeyValuePair < string, string>> listKeyValPair= new List< KeyValuePair< string, string>>();
KeyValuePair< string, string> keyValue= new KeyValuePair< string, string>("KEY1", "VALUE1");
listKeyValPair.Add(keyValue);
同じキーを2回追加できるかどうかが質問の場合、答えは「いいえ」です。ただし、アイテムを繰り返し処理して特定のキーの値のカウントを増やしたい場合は、「TryAdd」を使用してそれを達成できます方法。
var dict = new Dictionary<int, int>();
foreach (var item in array)
{
dict.TryAdd(item, 0);
dict[item]++;
}
他の場合に達成しようとしているのと同じことは、この方法で達成することができます」