首页 > 解决方案 > LINQ 查询不适用于 Select2

问题描述

我正在使用 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 个要搜索的项目。

标签: c#asp.net-mvcentity-frameworklinq-to-sql

解决方案


1)假设这是你的Country模型。

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

2)这string[]包含您选择的国家/地区2。

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()=> 返回转换为小写的此字符串的副本。

输出:

在此处输入图像描述

试一次可能对你有帮助。


推荐阅读