更新 这是我与@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 的项目