0

データベースからマルチレベルの動的メニューを取得しています。現在、正常に呼び出していますが、非同期にしたいです。
これが私のコードです。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var menus = Uow.Menus.GetAll()
        .Select(m => new ParentMenuViewModel()
        {
            MenuId = m.MenuId,
            Name = m.Name,
            ParentId = m.ParentId
        })
        .ToList<ParentMenuViewModel>();
    ViewBag.Menus = CreateVM(0, menus);
    base.OnActionExecuting(filterContext);
}

public IEnumerable<ParentMenuViewModel> CreateVM(int parentid, List<ParentMenuViewModel> list)
{
    return list.Where(m=> m.ParentId==parentid)
        .Select(m=> new ParentMenuViewModel()
        {
            MenuId = m.MenuId,
            Name = m.Name,
            ParentId = m.ParentId,
            ChildMenus = CreateVM(m.MenuId, list)
        });
}

では、async および await キーワードを使用してこれを非同期にするにはどうすればよいでしょうか。
子が完全に読み込まれるまでループすることに注意してください。
非同期にすることも良い習慣ですか (上記のコード)?

4

1 に答える 1