0

我的数据如下所示:

系列 1 图像 1 图像文件 1 图像
2图像文件
2
图像 3 图像文件 3

系列 2
图像1 图像文件 1 图像 2 图像文件 2 图像 3 图像文件 3 图像 4 图像文件 4


系列 3 图像 1 图像文件
1

我试图使用 Lists 和这个类来存储它:

  private List<SeriesClass> dcm = new List<SeriesClass>();

   public class SeriesClass
    {

      public int SeriesId { get; set; }
      public int Value1 { get; set; }
      public string Value2 { get; set; }

    }
  Loop that populates the data {
   dcm.Add(new SeriesClass { Value1 = value1, Value2 = value2, SeriesId = seriesnum});
}

显然不包括所有代码。我的结果是这样的:

系列 1 图像1 图像文件 1 系列
1 图像 2图像文件 2
系列 1 图像 3 图像文件 3

Series2 Image1 ImageFile1
Series2 Image2 ImageFile2
Series2 Image3 ImageFile3
Series2 Image4 ImageFile4

系列 3 图像 1 图像文件 1

我想知道是否有一种嵌套类的好方法,以便 SeriesID 变得像一个包含其余数据的键域。就像我可以拉出特定系列下的图像列表一样。

我试图这样做:

public class SeriesClass
        {

      public int SeriesId { get; set; }

public class ImageClass{
      public int Value1 { get; set; }
      public string Value2 { get; set; }
          }

         }
  Loop that populates the data {
      dcm.Add(new SeriesClass { SeriesClass.ImageClass.Value1 = value1, SeriesClass.ImageClass. Value2 = value2, SeriesClass.SeriesId = seriesnum});
}

但是 List.Add 不允许这样做。任何帮助将不胜感激。我昨天刚开始使用 C#,所以这对我来说有点新。如果有更好的方法可以使用锯齿状数组或字典或其他东西来做到这一点,我也会为此做好准备。

谢谢 :)

4

1 回答 1

0

我相信您需要使用字典。字典可以使用 id 作为键,使用列表作为值。

   private Dictionary<Integer,List<SeriesClass>> dict= new Dictionary<Integer,List<SeriesClass>>();

   public class SeriesClass
    {

      public int Value1 { get; set; }
      public string Value2 { get; set; }

    }
  Loop that populates the data {
   if ( dict.containsKey(seriesNum) ){
       dict[seriesNum].Add(new SeriesClass { Value1 = value1, Value2 = value2});
   }else{
      var list = new List<SeriesClass>();
      list.Add(new SeriesClass { Value1 = value1, Value2 = value2} );
      dcm.Add(seriesNum, list);
   }
}

我没有测试过代码,所以可能会有语法错误,但我希望你能明白要点。TryGet 可能比使用 containsKey 更好。

于 2013-06-23T02:55:51.103 回答