Есть документ, в котором расположены меню навигации и пункты меню.
Я не получил ничего от запросов, которые я использовал. Потому что он всегда приносил все элементы главного меню. Первый метод Find () подходит, но метод Any (), который я создал для внедренного документа, не дает желаемого результата.
public class NavMenu
{
public string Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public AuthList Auths { get; set; }
public List<NavMenuItems> MenuItems { get; set; }
}
public class AuthList
{
public bool Program { get; set; }
public bool Admin { get; set; }
public bool Moderator { get; set; }
public bool Member { get; set; }
public bool AnyBody { get; set; }
}
public class NavMenuItems
{
public string Id { get; set; }
public string MenuId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public bool IsActive { get; set; }
public AuthList Auths { get; set; }
}
List<NavMenu> menuList = await collection.Find(m =>
m.IsActive && m.Auths.Program &&
m.MenuItems.Any(i => i.IsActive && i.Auths.Program)).ToListAsync();
Изменить: Приведенный выше запрос приносит мне меню 1 и все пункты меню внутри. Но я хочу Menu1 и его подпункты Пункт меню 1 и Пункт меню 2
List<NavMenu> navMenus = new List<NavMenu>();
List<NavMenuItems> menuItems = new List<NavMenuItems>();
menuItems.Add(new NavMenuItems
{
Name = "MenuItem 1",
Auths= new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
IsActive = true,
MenuId = "1",
Url = "someUrl"
});
menuItems.Add(new NavMenuItems
{
Name = "MenuItem 2",
Auths= new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
IsActive = true,
MenuId = "1",
Url = "someUrl"
});
menuItems.Add(new NavMenuItems
{
Name = "MenuItem 3",
Auths= new AuthList {Admin = true, AnyBody = false, Member = false, Moderator = false, Program = false},
IsActive = true,
MenuId = "1",
Url = "someUrl"
});
menuItems.Add(new NavMenuItems
{
Name = "MenuItem 4",
Auths= new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
IsActive = false,
MenuId = "1",
Url = "someUrl"
});
navMenus.Add(new NavMenu
{
Id = "1",
Auths = new AuthList {Admin = false, AnyBody = false, Member = false, Moderator = false, Program = true},
IsActive = true, Name = "Menu 1",
MenuItems = menuItems
});