更新 これは私が@Slaumaと話し合った以下からの私のコメントです:
渡されたルートカテゴリに接続されているすべての場所を取得する必要があるためです。ご覧のとおり、2を通過し、一部の場所にカテゴリ44があり、44は32の子であり、これは2の子です。この場所を取得する必要があります。LocationCategoryは、LocationsとPlaceCategoriesの間のデータベース内のN:Nテーブルです。重要ではありませんが、より良い画像を提供できます。私は地図とその地図上のマーカーを持っています。Education(id:2)リンクをクリックすると、ロケーションカテゴリのルートが「2」であるすべてのマーカーを取得する必要があります(foursquare.comマップのように)
データベースに自己参照テーブルがあります。そこで、次のオブジェクトを作成しました。
public class PlaceCategory
{
public int PlaceCategoryId { get; set; }
public string Name{ get; set; }
public int? ParentId { get; set; }
public virtual PlaceCategory Parent { get; set; }
public virtual ICollection<PlaceCategory> Children { get; set; }
public string Icon { get; set; }
}
Locationオブジェクトは複数のカテゴリを持つことができるため、LocationCategoryオブジェクトがあります。
public class LocationCategory
{
[Key, Column(Order = 1)]
public int LocationId { get; set; }
[Key, Column(Order = 2)]
public int PlaceCategoryId { get; set; }
public Guid UserId { get; set; }
public DateTime CreatedOnDate { get; set; }
public bool IsPrimary { get; set; }
public virtual Location Location { get; set; }
public virtual PlaceCategory PlaceCategory { get; set; }
public virtual User User { get; set; }
}
ロケーションオブジェクトには次のものがあります。
public class Location
{
...
public virtual ICollection<LocationCategory> LocationCategories { get; set; }
...
自己参照テーブルのデータベースには、次のものがあります。
root: Education (id:2, parentId:null)
child1: School(id:32, parentId:2)
child2: Elementary(id:42,parentId:32), High(id:43,parentId:32), Higher(id:44,parentId:32) etc.
渡されたルートカテゴリに基づいて場所のリストを取得する必要があります。
var model = locationRepository.GetLocationss().Where(x => x.LocationCategories???); // but it's a list and don't know how to check top most parent here?
したがって、「2」に合格すると、カテゴリ2、32、42、43、44のすべてのアイテムを取得する必要があります。