以下に示すのは、格納できるクラスを構築しようとしているクラス構造であり、以下に示すデータの階層にアクセスできます。
言葉で要約すると(コードの後に下の図の階層を参照してください)。
すべてのリージョンにはマスターリージョンが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コントロールにバインドできるようにするために必要です。