次の宣言があります。
Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
最初の要素を取得する必要がありますが、キーまたは値がわかりません。これを行う最良の方法は何ですか?
これに来て、辞書からan要素を取得するlinqなしの方法を望んでいる人のために
var d = new Dictionary<string, string>();
d.Add("a", "b");
var e = d.GetEnumerator();
e.MoveNext();
var anElement = e.Current;
// anElement/e.Current is a KeyValuePair<string,string>
// where Key = "a", Value = "b"
これが実装固有かどうかはわかりませんが、辞書に要素がない場合、Current
にはKeyValuePair<string, string>
が含まれ、キーと値の両方がnull
になります。
(linqのFirst
メソッドの背後にあるロジックを調べてこれを見つけ出し、LinqPad 4
でテストしました)
First()
を使用できますが、辞書自体には順序がありません。代わりに OrderedDictionary を使用してください。そして、FirstOrDefault
を実行できます。この方法は有意義です。
編集:OrderedDictionaryを使用します。
FirstOrDefault()
を使用して最初の値を取得することをお勧めします。
例:
var firstElement = like.FirstOrDefault();
string firstElementKey = firstElement.Key;
Dictinary<string,string> firstElementValue = firstElement.Value;
辞書はアイテムの順序を定義しません。アイテムが必要な場合は、辞書のKeys
またはValues
プロパティを使用して選択します。
Dictionary<string, Dictionary<string, string>> like = new Dictionary<string, Dictionary<string, string>>();
Dictionary<string, string> first = like.Values.First();
辞書の最初の要素を見つける簡単な方法を見つける:)
Dictionary<string, Dictionary<string, string>> like =
newDictionary<string,Dictionary<string, string>>();
foreach(KeyValuePair<string, Dictionary<string, string>> _element in like)
{
Console.WriteLine(_element.Key); // or do something
break;
}