簡體   English   中英

嵌套類C#

[英]Nested Classes C#

我有看起來像這樣的數據:

系列1
圖片1圖片文件1
圖片2圖片文件2
圖片3圖片文件3

系列2
圖片1圖片文件1
圖片2圖片文件2
圖片3圖片文件3
圖片4

系列3
圖片1圖片文件1

我試圖使用列表和此類存儲它:

  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});
}

顯然不包括所有代碼。 我的結果是這樣的:

Series1 Image1 ImageFile1
Series1 Image2 ImageFile2
Series1 Image3 ImageFile3

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

Series3 Image1 ImageFile1

我想知道是否有一種嵌套類的好方法,以便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#,所以這對我來說是個新事物。 如果有更好的方法可以使用鋸齒狀的數組或Dictionary或其他類似的方法。

謝謝 :)

我相信您需要使用字典。 字典可以將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更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM