我有以下模型,它代表一个两级菜单层次结构,我需要做的是从SubMenuItems
子集合中选择一个ID然后连接其及其父记录TextToDisplay
属性的结果
我的问题是如何返回单个父项和单个子项然后访问TextToDisplay
属性?
我要查询的对象是ObserableCollection
public ObservableCollection<MenuModel> MenuItems { get; set; }
模型
public class MenuModel
{
public int ID { get; set; }
public string TextToDisplay { get; set; }
public string ImageSource { get; set; }
public ObservableCollection<MenuModel> SubMenuItems { get; set; }
}
答案 0 :(得分:1)
使用Single()
获取一个项目,Any()
检查是否存在与查询匹配的列表元素:
int theIdYouWant = 30; //for example
var parentItem = MenuItems.Single(i => i.SubMenuItems.Any(si => si.Id == theIdYouWant));
var text = parentItem.TextToDisplay +
parentItem.SubMenuItems.Single(i => i.Id == theIdYouWant).TextToDisplay;
注意如果没有父项包含ID为30的子项,或者如果返回多个父项,则会抛出异常 - 因此您可能需要使用SingleOrDefault()
来检查null,或Where
然后选择您想要的项目。