Преобразовать int и biging для фильтра ListViewModel C# - PullRequest
1 голос
/ 11 апреля 2020

Я создал ListViewModel что-то вроде этого

public class ListPersonalsViewModel
{
    public long PersonalID { get; set; }
    public int NationalCode { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

, и я использую этот код

public List<ListPersonalsViewModel> GetNamePersonal(string filter = "")
{
    if (filter == null)
    {
        return db.tblPersonals.Select(p => new ListPersonalsViewModel()
                    {
                        NationalCode = p.NationalCode,
                        PersonalID = p.PersonalID,
                        FirstName = p.FirstName,
                        LastName = p.LastName
                    }).ToList();
    }

    return db.tblPersonals.Where(p => p.FirstName.Contains(filter)||
                                      p.LastName.Contains(filter) ||
                                      p.NationalCode.Contains(filter) ||
                                      p.PersonalID.Contains(filter))
                          .Select(p => new ListPersonalsViewModel()
                                           {
                                               NationalCode = p.NationalCode,
                                               PersonalID = p.PersonalID,
                                               FirstName = p.FirstName,
                                               LastName = p.LastName
                                           }).ToList();
}

Теперь мой вопрос: как я могу конвертировать PersonalID и NationalCode к строке для работы здесь?

Вот только 2 моих строковых фильтра работы

я получаю эту ошибку 2

Ошибка CS1929 'long' не содержит определения для 'Contains' и лучшей перегрузки метода расширения 'Queryable.

Ошибка CS1929' int 'не содержит определения для' Contains 'и лучшей перегрузки метода расширения' Queryable.

я думаю это лучше для понимания

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

с этим кодом моя проблема решена

,,,

return db.tblPersonals.Where(p => p.FirstName.Contains(filter)||
                                  p.LastName.Contains(filter) ||
                                  p.NationalCode.ToString().Contains(filter) ||
                                  p.PersonalID.ToString().Contains(filter))
                      .Select(p => new ListPersonalsViewModel()

,,,

0 голосов
/ 11 апреля 2020

Попробуйте изменить имя свойства с FirstName на FirstNameID и добавьте запятую в конце оператора.

Основная проблема с FirstNameID = p.FirstName в этой строке - запятая отсутствует в конце оператора.

Другая проблема в том, что имя свойства неверно. измените «Имя файла» на «FileNameID».

public List<ListPersonalsViewModel> GetNamePersonal(string filter = "")
        {
            if (filter == null)
            {
                return db.tblPersonals.Select(p => new ListPersonalsViewModel()
                {
                    NationalCode = p.NationalCode,
                    PersonalID = p.PersonalID,
                    FirstNameID = p.FirstName,
                    LastName = p.LastName
                }).ToList();
            }

            return db.tblPersonals.Where(p => p.FirstName.Contains(filter) ||
                                              p.LastName.Contains(filter) ||
                                              p.NationalCode.Contains(filter) ||
                                              p.PersonalID.Contains(filter))
                                  .Select(p => new ListPersonalsViewModel()
                                  {
                                      NationalCode = p.NationalCode,
                                      PersonalID = p.PersonalID,
                                      FirstNameID = p.FirstName,
                                      LastName = p.LastName
                                  }).ToList();
        }
...