【Linq】模糊条件查询

模糊查询

SQL里字段的模糊匹配可以使用like关键字,使用方式如:like "%search"like "search%"like "%search%",分别对应后缀、前缀、包含三种模糊匹配方式

Linq对应的模糊查询

  1. 前缀匹配搜索

    1
    2
    3
    var l = from p in Person
    where p.name.StartsWith("jack")
    select p;
  2. 后缀匹配搜索

    1
    2
    3
    var l = from p in Person
    where p.name.EndsWith("chen")
    select p;
  3. 包含匹配搜索

    1
    2
    3
    var l = from p in Person
    where p.name.Contains("ac")
    select p;
  4. 条件模糊查询

有时候界面上面,我们在表格前面会有个输入框,提供一些字段的搜索,在不输入的时候,这个搜索条件就不作为限制条件

而这时传到后端的条件是null,前面三种搜索直接使用的话,会出现结果的错误,null成了限制条件

所以需要在where里加上对应字段为null的情况,使搜索条件为空时,模糊匹配失效

1
2
3
4
5
string search = null;

var l = from p in Person
where p.name.Contains(search) || search == null
select p;

  1. 条件中innot in
    参考:LINQ - 在Where條件式中使用in與not in —— ADOU-V,博客园

in的SQL实现:

1
2
Select ProductID, ProductName, CategoryID From dbo.Products  
Where CategoryID in (1, 2)

in的Linq实现:

1
2
3
var l = from p in dbctx.Products 
where (new int?[] {1, 2}).Contains(p.CategoryID)
select p;

not in的SQL实现:

1
2
Select ProductID, ProductName, CategoryID From dbo.Products  
Where CategoryID not in (1, 2)

not in的Linq实现:

1
2
3
var l = from p in dbctx.Products 
where !(new int?[] {1, 2}).Contains(p.CategoryID)
select p;