Как я могу динамический пользователь Где в Lambda Linq с C # - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу использовать динамический , где для получения данных из пользовательского интерфейса поиска с несколькими условиями. Также есть ViewModel, который заполняет из двух таблиц запросом на соединение, это мой код:

public async Task<IEnumerable<Model.ViewModels.KarApplicantViewModel>> GetAllByGroupAsync(string marital ,string gender, string Degree,string Isargari)
    {

        var query = _db.KarApplicants
                             .Include(n => n.Gender)
                              .Include(n => n.MaritalStatus)
                              .Include(n => n.MilitaryStatus)
                              .Join(_db.KarApplicantScores,
                              kar1 => kar1.Id,
                              kar2 => kar2.KarApplicantId,
                              (kar1, kar2) => new { KarApplicant = kar1, KarApplicantScore = kar2 }).AsQueryable();
        if (marital == "single")
        {
            query.Where(x => x.KarApplicant.KarMaritalStatusId == 1);
        }

     KarApplicantScore = kar2 })
//IEnumerable<KarApplicantViewModel> gg;
         //query = _db.KarApplicants
         //                     .Include(n => n.Gender)
         //                      .Include(n => n.MaritalStatus)
         //                      .Include(n => n.MilitaryStatus)
         //                      .Join(_db.KarApplicantScores,
         //                      kar1 => kar1.Id,
         //                      kar2 => kar2.KarApplicantId,
         //                      (kar1, kar2) => new { KarApplicant = kar1, KarApplicantScore = kar2 })


            return  await  query.Select(m => new KarApplicantViewModel
                                {
                                    Name = m.KarApplicant.Name,
                                    LastName = m.KarApplicant.LastName,
                                    FatherName = m.KarApplicant.FatherName,
                                    NCode = m.KarApplicant.NCode,
                                    BirthDate = m.KarApplicant.BirthDate,
                                    KarMaritalStatus = m.KarApplicant.MaritalStatus,
                                    GPA = m.KarApplicantScore.GPA,
                                    KarFieldOfStudy = m.KarApplicantScore.KarFieldOfStudy,
                                    KarDegreeOfEducation = m.KarApplicantScore.KarDegreeOfEducation,
                                    KarPeriorityPlace = m.KarApplicantScore.KarPeriorityPlace,
                                    KarNative = m.KarApplicantScore.KarNative,
                                    Email = m.KarApplicant.Email,
                                    Address = m.KarApplicant.Address,
                                    ActDuration = m.KarApplicantScore.ActDuration,
                                    BirthPlace = m.KarApplicant.BirthPlace,
                                    CorrentLocation = m.KarApplicant.CorrentLocation,
                                    DegreeDate = m.KarApplicantScore.DegreeDate,
                                    Description = m.KarApplicantScore.Description,
                                    DrivingLicence = m.KarApplicantScore.DrivingLicence,
                                    Gender = m.KarApplicant.Gender,
                                    KarGenderId = m.KarApplicant.KarGenderId,
                                    KarIsargari = m.KarApplicantScore.KarIsargari,
                                    KarIsargarRelation = m.KarApplicantScore.KarIsargarRelation,
                                    KarLanguageSkill = m.KarApplicantScore.KarLanguageSkill,
                                    KarMilitaryStatus = m.KarApplicant.MilitaryStatus,
                                    KarRelativsWork = m.KarApplicantScore.KarRelativsWork,
                                    Mobile = m.KarApplicant.Mobile,
                                    Phone = m.KarApplicant.Phone,
                                    PlaceOfDegree = m.KarApplicantScore.PlaceOfDegree,
                                    PN = m.KarApplicant.PN,
                                    RelativeSkill = m.KarApplicantScore.RelativeSkill,
                                    PostalCode = m.KarApplicant.PostalCode,
                                    Resume = m.KarApplicantScore.Resume,
                                    KarApplicantId = m.KarApplicant.Id
                                }).ToListAsync();

В коде «Выше» оставьте код комментария, потому что вы знаете, что изменили мою позицию кода запроса, но не получили хорошего результата.

Я использую> много Где с условием multi перед TolistAsync ();

изменить объединение до, где или после TolistAsync (), но запрос вернет одну и ту же запись, использовать расширение для многих сайтов, но конфликтовать с другим кодом, например, с классом подкачки

...