LINQ-запрос не работает с Select2 - PullRequest
0 голосов
/ 28 августа 2018

Я использую плагин Select2 для поиска по моей таблице через LINQ. Проблема, с которой я сталкиваюсь, заключается в том, что множественный выбор возвращает мне массив, и я получаю ошибку, которую не могу преобразовать string[] в string. Вот мой взгляд:

<select class="js-example-basic-multiple"name="country[]" multiple="multiple">
  <option value="">Select a country...</option>
  <option value="AF">Afghanistan</option>
  <option value="AX">Åland Islands</option>
  <option value="AL">Albania</option>
</select>

Я хочу на контроллере искать записи, которые я выбираю из выпадающего списка. Мой контроллер:

var model = from r in db.Clients
  orderby r.DateRegister descending
  where (r.DateRegister >= datepicker3 && r.DateRegister <= datepicker2 || datepicker2 == null || datepicker3 == null)
  where r.Name.Contains(FirstName) || FirstName == "" || FirstName == null
  where r.LastName.Contains(LastName) || LastName == "" || LastName == null
  where r.Phone.Contains(Phone) || Phone == "" || Phone == null
  where r.Email.Contains(Email) || Email == "" || Email == null
  where r.PromoCode.Contains(PromoCode) || PromoCode == "" || PromoCode == null
  where r.Brand.Contains(Brand) || Brand == "" || Brand == null
  where r.Rentetiion == Retetion || Retetion == null
  where r.SaleStatus == statos || statos == null
  where r.Desk == desk || desk == null
  where r.workerId == Broker || Broker == null
  where r.Country.Contains(country)||country == null

Где country будет более 1 элемента для поиска.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

1) Предположим, это ваша Country модель.

class Country
{
    public string Name { get; set; }
    public string Code { get; set; }
}

2) И это string[] содержит страну из вашего select2.

string[] country = new string[2] { "India", "Shrilanka" };

3) И это те страны, которые уже есть в моей базе данных.

List<Country> countries = new List<Country>();
countries.Add(new Country { Name = "India", Code = "IN" });
countries.Add(new Country { Name = "Australia", Code = "AU" });
countries.Add(new Country { Name = "Shrilanka", Code = "SL" });

4) Затем я использовал приведенный ниже запрос, чтобы отфильтровать страны из моей базы данных с указанным выше string[], который содержит только 2 страны.

var query = (from r in countries
        where country == null || country.Any(c => c.Trim().ToLower().Contains(r.Name.Trim().ToLower()))
        select new
        {
           CountryName = r.Name,
           CountryCode = r.Code
        });


var result = query.ToList();

Trim() => Удаляет все начальные и конечные пробельные символы из текущей System.String.

ToLower() => Возвращает копию этой строки, преобразованную в нижний регистр.

Выход:

enter image description here

Попробуйте один раз, может это вам поможет.

0 голосов
/ 28 августа 2018

Попробуйте это,

where r.Country.Contains(c => Country.Contains(c.country) || c.country == null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...