在C#LINQ中使用SQL LIKE运算符

Beh*_*shi 6 c# sql linq

我正在用C#构建一个查询.对于整数和字符串字段,大小写非常简单.对于日期字段,我使用以下查询:

list.Where("myDateColumn >= DateTime(2017,1,20)");
Run Code Online (Sandbox Code Playgroud)

我如何在LINQ中执行以下SQL LIKE查询?

select * from table where myTextColumn LIKE '%abc%';
Run Code Online (Sandbox Code Playgroud)

suj*_*lil 22

Linq中有很多可能性:

对于LIKE'%abc%';

list.Where(x => x.myTextColumn.Contains('abc'));
Run Code Online (Sandbox Code Playgroud)

对于LIKE'abc%';

list.Where(x => x.myTextColumn.StartWith('abc'));
Run Code Online (Sandbox Code Playgroud)

对于LIKE'%abc';

list.Where(x => x.myTextColumn.EndsWith('abc'));
Run Code Online (Sandbox Code Playgroud)

更新:如果您需要添加日期比较,则意味着您可以执行以下操作:

DateTime date2Compare = new DateTime(2017, 1, 20);
list.Where(x => myDateColumn >= date2Compare && x.myTextColumn.Contains('abc'));
Run Code Online (Sandbox Code Playgroud)


mon*_*_za 5

在LIKE子句中放置通配符'%'会产生影响,C#有支持这种方法的方法.以下是通配符的放置方式.

喜欢'%abc'

含义:找到以'abc'结尾的任何单词.

C#等价物:EndsWith

喜欢'abc%'

含义:查找以'abc'开头的任何单词,您不关心之后的文本.

C#等价物:StartWith

喜欢'%abc%'

含义:查找包含'abc'的任何单词,并且您不关心单词出现在哪里.

C#等价物:Contains