4

に保持しているデータベースからの結果がたくさんありますDictionary<int, Result>()

私が持っている結果クラスは次のとおりです。

public int Id { get; set; }
public string something { get; set; }
public string somethingtwo { get; set; }
public string somethingthree { get; set; }
public DateTime Posted { get; set; }
public string Location { get; set; }
public bool somethingfour { get; set; }

そのため、Dictionary<int, Result>内部には多くの結果があり、それらを繰り返し処理したいと思います。どうやってこれを行うのですか?いくつかの方法を試しましたが、うまくいかないことはわかっていました。

私はこのようなことをしたいと思います:

foreach(var result in resultDict)
{
   mynewstring = result.Location;
   mynewstringtwo = result.Posted;
   // etc etc.
}
4

8 に答える 8

7
foreach(var kvp in resultsDict) {
    //Do somethign with kvp
    UseResult(kvp.Value); //kvp.Value is a Result object
    UseKey(kvp.Key); //kvp.Key is the integer key you access it with
}

上記のコードkvpでは、KeyValuePair<int, Result>. KeyおよびプロパティにアクセスしてValue、 の整数キーDictionaryおよび にResult関連付けられた値を取得できますKey。どのプロパティがどれであるかを理解するための演習/推測ゲームとして残しておきます。;-)

@Wiktor が言及しているように、辞書Valuesとコレクションにアクセスして同じことを行うこともできますが、代わりにまたはプロパティKeysのシーケンスを取得できます。intValue

他のコレクションを使用した代替:

foreach(var val in resultsDict.Values) {
    // The key is not accessible immediately,
    // you have to examine the value to figure out the key
    UseResult(val); //val is a value.
}

foreach(var key in resultsDict.Keys) {
    //The value isn't directly accessible, but you can look it up.
    UseResult(resultsDict[key]);
    UseKey(key);
}
于 2012-05-22T19:00:56.940 に答える
4

Dcitionary には Values という ValueCollection があるため、コードは次のようになります。

foreach (Result r in dict.Values)
{
    mynewstring = result.Location;
    mynewstringtwo = result.Posted;
}
于 2012-05-22T19:05:22.880 に答える
1
var dictionary = ...;
foreach ( var result in dictionary.Values )
{
   ...
}

それはあなたが必要とするものですか?

于 2012-05-22T19:01:50.697 に答える
0

foreachディクショナリでa を使用します。

foreach (var keyValue in dictionary) { //Use key value here }

于 2012-05-22T19:06:13.550 に答える
0

プロパティを使用してValues、a の値を反復処理できます ( MSDN ページDictionaryも参照してください)。

コード例:

// Your dictionary
var myResultDictionary = new Dictionary<int, Result>();

foreach (var item in myResultDictionary.Values)
{
    // "item" holds a Result object
    // Do something with item
}

を定期的にループすることもできますDictionaryitemKeyValuePair( MSDN ページ) オブジェクトになります。Value変数アイテムのプロパティで値にアクセスできます。

コード例:

// Your dictionary
var myResultDictionary = new Dictionary<int, Result>();

foreach (var item in myResultDictionary)
{
    // "item" holds a KeyValuePair<int, Result> object
    // You can access the value (a Result object) by calling "item.Value"
    // Do something with item
}
于 2012-05-22T19:02:19.263 に答える
0

Dictionary.Values を反復処理できます。これは他のものと同じです。IEnumerable<Result>

または、ディクショナリを反復処理できます。IEnumerable<KeyValuePair<int, Result>>

于 2012-05-22T19:02:39.850 に答える
0
foreach (KeyValuePair<int,Result> item in dictionary)
            {
                //do stuff
            }
于 2012-05-22T19:03:11.130 に答える
0
foreach(KeyValuePair<int,result> keyValue in yourDictionary)
{
    Debug.WriteLine(keyValue.Value);
    //or
    Debug.WriteLine(keyValue.Key);
}

または同じことですが、var を使用します。

foreach(var keyValue in yourDictionary)
{
    Debug.WriteLine(keyValue.Value);
    //or
    Debug.WriteLine(keyValue.Key);
}

^^ 同じことですが、 var は動的に独自の型を把握します

または、結果だけが必要な場合は、これを実行できます。

foreach(var result in yourDictionary.Values)
{
    Debug.WriteLine(result);
}
于 2012-05-22T19:03:32.877 に答える