0

我有下面的模型,它代表了一个两级菜单层次结构,我需要做的是从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; }
}
4

1 回答 1

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()改用并检查是否为空,或者Where然后选择您想要的项.

于 2012-10-04T08:37:18.487 回答