首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆分字典中的键值

拆分字典中的键值
EN

Stack Overflow用户
提问于 2013-02-13 14:45:30
回答 2查看 2.8K关注 0票数 0

我在字典中有几个键(代表主题),并将每个键关联几个值(代码)。

代码主题

7DIM-039通信

7DIM-040通信

7DIM-041通信

7DIM-042通信

7DIM-043通信

为了将每个主题(键)与几个值(代码)相关联,我在查询中这样做。我创建了一本字典

代码语言:javascript
运行
复制
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;职业;倾听技能;个人发展;提问技能;指导/指导等。

如何拆分这些值,同时仍然确保各个代码值与每个拆分值相关联?

代码语言:javascript
运行
复制
foreach(var kvp in dict)
        {
            foreach (var s in kvp.Key)
            {
                //splitting the subject keys?
            }
        }

我还设计了一个split方法

代码语言:javascript
运行
复制
static string[] SplitStringAt(string splitItem, char character)
    {
        return splitItem.Split(character);
    }

这是一个示例代码GenSubject

7DIM-062沟通,提问技巧,决策

7DIM-063沟通,提问技巧,决策

7DIM-064沟通、提问技巧、决策

7DIM-065沟通、提问技能、决策

7DIM-066沟通、提问技能、决策

7DIM-067沟通、提问技能、决策

所以我想要实现的是所有的代码都被存储起来用于交流,同样的代码用于提问技能等,但当然只有一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-13 14:56:13

试试这个。

代码语言:javascript
运行
复制
        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都需要是唯一的!

票数 1
EN

Stack Overflow用户

发布于 2013-02-13 15:10:14

很抱歉,您的问题包含一些我不理解的部分:您引用的是键和分号,但随后给出了一个以逗号分隔的主题的示例。

我假设你有用逗号分隔的主语。

如果你想在阅读时正确地分配你的主题,拆分你的subject并将每个单独的条目分配给字典,就像你之前对整个主题所做的那样。

代码语言:javascript
运行
复制
Dictionary<string, List<string>> dict = new Dictionary<string,List<string>>();

while (dbReader.Read())
{
  string code = (string)dbReader["CODE"];
  string subject = (string)dbReader["SUBJECT"];
  foreach (string singleSubject in subject.Split(','))
  {
    if (!dict.ContainsKey(singleSubject))
    {
      dict.Add(subject, new List<string> { code });
    }
    else
    {
      dict[subject].Add(code);
    }
 }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14847963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档