0

ディクショナリに複数のキー (サブジェクトを表す) があり、キーごとに複数の値 (コード) を関連付けます。

コードの件名

7DIM-039 コミュニケーション

7DIM-040 コミュニケーション

7DIM-041 コミュニケーション

7DIM-042 コミュニケーション

7DIM-043 コミュニケーション

各サブジェクト (キー) をいくつかの値 (コード) に関連付けるために、クエリでこれを行います。辞書を作成しました

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

while (dbReader.Read())
            {
                string code = (string)dbReader["CODE"];
                string subject = (string)dbReader["SUBJECT"];

                if (!dict.ContainsKey(subject))
                {
                    dict.Add(subject, new List<string> { code });
                }
                else
                {
                    dict[subject].Add(code);
                }
            }

これが結果です

ここに画像の説明を入力

私が抱えている問題は、これらのキーのいくつかがセミコロンで区切られていることです(したがって、キーごとにいくつかの項目があります)。当然、分割する必要があります。

例: GenSubject;キャリア; リスニング能力; 自己啓発; 質問スキル; コーチング・メンタリングなど

これらの値を分割し、さまざまなコード値が各分割値に関連付けられていることを確認するにはどうすればよいですか?

foreach(var kvp in dict)
        {
            foreach (var s in kvp.Key)
            {
                //splitting the subject keys?
            }
        }

分割方法も考案しました

static string[] SplitStringAt(string splitItem, char character)
    {
        return splitItem.Split(character);
    }

これは例です CODE GenSubject

7DIM-062 コミュニケーション、質問力、決断力

7DIM-063 コミュニケーション、質問力、決断力

7DIM-064 コミュニケーション、質問力、決断力

7DIM-065 コミュニケーション、質問力、意思決定力

7DIM-066 コミュニケーション、質問力、決断力

7DIM-067 コミュニケーション、質問力、決断力

だから私が達成したいのは、コミュニケーションのためにすべてのコードを保存し、質問スキルなどのために同じコードを保存することですが、もちろん一度だけです。

4

2 に答える 2

1

これを試して...

        foreach (KeyValuePair<string, List<string>> kvp in dic)
        {
            if (kvp.Key.Contains(";"))
            {
                var lst = kvp.Value;
                foreach (string subKey in kvp.Key.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries))
                {
                    dic[subKey] = lst;
                }
            }
        }

すべてsubKeyがユニークである必要があります!

于 2013-02-13T06:56:13.420 に答える