0

xml ファイルから取得したオブジェクトがあり、指定した Series コードに関連付けられた SeriesCode および ProductCodes のフィールドが含まれています。

すなわち

SeriesCodeA
      prodCode1
      prodCode2
      prodCode3
SeriesCodeA
      prodCode4
      prodCode5
      prodCode6

次の辞書を作成しました

Dictionary<string, List<string>> dictSeries = new Dictionary<string, List<string>>();

ディクショナリに追加するオブジェクトの値。つまり、辞書キーに文字列値として追加された各シリーズ コードに対して、対応する製品コードを文字列値として追加したいということです。

何かのようなもの

foreach (var s in series)
{
    string code = s.SeriesCode;
    if (dictSeries.ContainsKey(code))
    {
        foreach (var l in s.ProductCodes)
        {
            dictSeries[code].Add(l);
        }
    }

}

上記は完全に正しくありません

SeriesCodes をキーとしてディクショナリに追加し、対応する製品コードを文字列値 (リスト) として追加するにはどうすればよいですか?

4

1 に答える 1

3

LINQメソッドとメソッドを使用ToDictionaryして読みやすくします。

var dictSeries = series.ToDictionary(x => x.SeriesCode, x => x.ProductCodes);

Seriesあなたのクラスがそのように見えると仮定しました:

class Serie
{
    public string SeriesCode { get; set; }
    public List<string> ProductCodes { get; set; }
}

あなたのコードも動作しますが、いくつかの改善が必要です:

foreach (var s in series)
{
    string code = s.SeriesCode;
    if (!dictSeries.ContainsKey(code))
    {
        dictSeries.Add(code, new List<string>());
    }

    foreach (var l in s.ProductCodes)
    {
        dictSeries[code].Add(l);
    }
}
于 2013-04-04T11:59:23.447 に答える