0

2 レベルのメニュー階層を表す以下のモデルがあり、SubMenuItemsサブ コレクションから 1 つの 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()1 つのアイテムを取得し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アイテムを選択する必要があります.

于 2012-10-04T08:37:18.487 に答える