将字典作为元素传递给另一个字典

时间:2018-03-12 07:14:46

标签: c# asp.net .net dictionary

我有一个要求,我正在运行for循环,以便将数据从excel递增加载到字典,然后将其传递给另一个字典。我正在使用以下代码:

var contr = new Dictionary<string, Dictionary<string, object>>();
contr.Add("Contributor" + (j + 1), contributor_dictionary);
item.Add(contributor_list + (j + 1), contr);

字典&#34; contr&#34;有以下格式的数据:

contributor:{
 name: abc,
 title: xyz }

当我将其添加到项目字典时,它将输出为:

contributor_list1:{
  contributor1:{
   name: abc,
   title: xyz }

contributor_list2:{
  contributor2:{
   name: def,
   title: mno } and so on..

而我希望它的格式为:

contributor_list:{
  contributor1:{
   name: abc,
   title: xyz },

  contributor2:{
   name: def,
   title: mno }
}

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

我有类似的情况,这就是我处理它的方式。 既然您知道数据的格式是什么,那么您可以使用像这样的结构

public struct ExcellData
    {
        public string Name{ get; set; }
        public string Title{ get; set; }
    }

然后您现在可以使用字典来保存每个Excel数据

public class MyDictionary : List<ExcellData>
    {
        public void Add(string key, string Name, string Title)
        {
            ExcellData val = new ExcellData();
            val.Name= Name;
            val.Title= Title;
            this.Add(val);
        }
    }

然后在你的循环中你可以做到这一点

var cellData= new MyDictionary();
cellData.Add();

假设您的Excel数据在一行中有多个值,那么您的代码可能如下所示

 public struct ExcellCells
    {
        public string Someoption { get; set; }
        public string SomeOptionType { get; set; }
        public string[] cellList { get; set; }
    }

    public class MyDictionary : List<ExcellCells>
    {
        public void Add(string key, string option, string[] xcell)
        {
            ExcellCells val = new ExcellCells();
            val.SomeOptionType = key;
            val.Someoption = option;
            val.cellList = xcell;
            this.Add(val);
        }
    }

希望这会有所帮助

答案 1 :(得分:0)

我认为你每次循环时都会在项目字典中添加贡献者。首先创建您的控制字典集合,然后将其添加到项目。 无需在项目dict键中添加索引。 简单地写:
item.Add(contributor_list,对照); 如果contributor_list是常量/固定字符串,则项目字典似乎是多余的,但是如果它改变那么它的确定。

答案 2 :(得分:0)

假设您以字典的形式从Excel接收数据,那么您需要以下内容:

public class Contributor
{
    int ContributorID {get; set;}  // optional
    string name  {get; set;}
    string title  {get; set;}
}

然后将Excel词典解压缩到Contributor对象中,如果您需要一个键(上面没有使用它),请将该对象添加到词典中。

如果您不需要密钥,请使用Contributor

列表