0

以下に示すのは、格納できるクラスを構築しようとしているクラス構造であり、以下に示すデータの階層にアクセスできます。

言葉で要約すると(コードの後に​​下の図の階層を参照してください)。
すべてのリージョンにはマスターリージョンが1つだけ
あります。リージョンの下には、1つ以上のロケーションがあります。

                     public class RegionLocItemView
                        {

                            public  Guid Id { get; set; }
                            public  string name { get; set; }
                            public  Guid value { get; set; }
                            public  bool isChecked { get; set; }
                            public List<RegionLocItemView> Children
                            {
                                get ; 
                                set
                                {
                                   //where do i set this from             

                                } ;
                            }
                            public RegionLocItemView(List<RegionLocItemView> a)
                            {
                                Children = a;
                            }

                            public RegionLocItemView()
                            {
                            }

                        } /// end of class                                  

                Accessing class from code below:                      

                var getAvailableLocations = Model.SessionProvider.GetAvailableLocations.Where(e => e.Location.Count >= 1);

                    Guid parentid = Guid.Empty;
                    RegionLocItemView cls = new RegionLocItemView();
                    List<RegionLocItemView> main =  new List<RegionLocItemView>();
                 foreach (var a in getAvailableLocations)
                        {
                            if (a.ParentID == null)
                            {
                                //found Parent of all regions.
                                //cls = new RegionLocItemView();
                                cls.Id = a.ID;
                                parentid = a.ID;
                                cls.name = a.RecordName;
                                //main.Add(cls);
                                // break;
                            }

                            if (a.ParentID == parentid)
                            {
                                RegionLocItemView cls1 = new RegionLocItemView();
                                //found children
                                cls1.Id = a.ID;
                                parentid = a.ID;
                                cls1.name = a.RecordName;
                                cls.Children.Add(new List<RegionLocItemView>(cls1));  

                            }
                        }               

以下の階層に格納されているオブジェクトには、IEnumerableコレクションリストが必要です。

                    Main                     
                       Region1                  
                           Location1                
                           Location2           
                           Location3               
                       Region2                 
                            LocationA            
                            LocationB            
                            LocationC             
                        Region...                   
                            Location...               

質問:

上記のデータのクラス構造をリファクタリングして、C#コードでクラスにアクセスする方法のコードサンプルを提供していただけますか。IEnumerableコレクションから上記のデータを読み取っていますが、データが適切に配置されていないため、上記を実行する必要があります。

このクラス構造が必要な理由:これを、GenericListのようなIEnumerableコレクションを受け入れるTelerikTreViewコントロールにバインドできるようにするために必要です。

4

1 に答える 1

0

たぶん、汎用フレームワーククラスを使用して仕事をすることができます

public class Main : Dictionary<Region, List<Location>> { }
于 2012-09-27T20:03:53.917 に答える