Как я могу включить объект, который находится внутри списка, который находится внутри другого объекта? - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно проверить (для фильтра), является ли имя внутри объекта именем входа.

У меня есть модель под названием AppUser, которая является IdentityUser.AppUser содержит объект с именем UsersData.Внутри UsersData есть объекты List of Languages.Внутри объекта Languages ​​есть объект с именем LanguageName.Внутри LanguageName - это имя, которое мне нужно сравнить.

Мне нужно получить к нему доступ напрямую из AppUser.Я попытался включить данные, но я могу включить в список языков, но не поля внутри списка.

Я попытался использовать thenInclude, но так как это список, я могуНе используйте, затем включите.

Модель AppUser:

    public class AppUser : IdentityUser
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime BirthDate { get; set; }
        public UsersData UsersData { get; set; }

    }

Модель UsersData:

public class UsersData
    {
        public Guid Id { get; set; }
        public Gender Gender { get; set; }
        public City City { get; set; }
        public Company Company { get; set; }
        public Line Line { get; set; }
        public Area Area { get; set; }
        public List<AcademicRecord> AcademicRecords { get; set; }
        public List<MasterPostgraduate> MasterPostgraduates { get; set; }
        public List<Language> Languages { get; set; }
        public List<Technology> Technologies { get; set; }
        public List<Project> Projects { get; set; }
        public List<ProfessionalRecord> ProfessionalRecords { get; set; }
    }

Модель языка:

    public class Language
    {
        public Guid Id { get; set; }
        public LanguageName LanguageName { get; set; }
        public CertificationFile CertificationFile { get; set; }
        public int WritingLevel { get; set; }
        public int SpeakingLevel { get; set; }
        public int CertificationLevel { get; set; }
        public string CertificationName { get; set; }
        public DateTime CertificationDate { get; set; }
        public UsersData UserInfo { get; set; }
    }

Модель LanguageName:

    public class LanguageName
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
    }

Способ, которым я пытаюсь включить данные:

            List<AppUser> users = await _userManager.Users
                .Include(x => x.UsersData.Technologies)
                .Include(y => y.UsersData.AcademicRecords)
                .Include(z => z.UsersData.Languages)
                .ToListAsync();

На данный момент technologyName имеет значение null.

if(technoName != "")
{
    users = users.Where(x => x.UsersData.Technologies.Any(item => item.TechName.Name == technoName)).ToList();
}

Я ценю любую помощь.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Попробуйте что-то вроде следующего:

    class Program
    {

        static void Main(string[] args)
        {
            string technoName = "abc";
            UserManager _userManager = new UserManager();

            AppUser appUser = new AppUser() { Users = _userManager.Users.ToList() };

            var users = appUser.Users.SelectMany(x => x.Languages.Where(y => y.LanguageName.Name == technoName)).ToList();

        }

    }
    public class AppUser
    {
        public List<UsersData> Users { get; set; }
    }
    public class UserManager
    {
        public List<UsersData> Users { get; set; }
    }
    public class UsersData
    {
        public Guid Id { get; set; }
        //public Gender Gender { get; set; }
        //public City City { get; set; }
        //public Company Company { get; set; }
        //public Line Line { get; set; }
        //public Area Area { get; set; }
        //public List<AcademicRecord> AcademicRecords { get; set; }
        //public List<MasterPostgraduate> MasterPostgraduates { get; set; }
        public List<Language> Languages { get; set; }
        //public List<Technology> Technologies { get; set; }
        //public List<Project> Projects { get; set; }
        //public List<ProfessionalRecord> ProfessionalRecords { get; set; }
    }
    public class Language
    {
        public Guid Id { get; set; }
        public LanguageName LanguageName { get; set; }
        //public CertificationFile CertificationFile { get; set; }
        public int WritingLevel { get; set; }
        public int SpeakingLevel { get; set; }
        public int CertificationLevel { get; set; }
        public string CertificationName { get; set; }
        public DateTime CertificationDate { get; set; }
        public UsersData UserInfo { get; set; }
    }
    public class LanguageName
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
    }
0 голосов
/ 26 марта 2019

Несмотря на то, что это список, я могу использовать thenInclude, возможно, я что-то написал с ошибкой в ​​первый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...