我正在用 C# 建立一个查询。对于整数和字符串字段,大小写非常简单。对于日期字段,我使用以下查询:
list.Where("myDateColumn >= DateTime(2017,1,20)");
如何在 LINQ 中执行以下 SQL LIKE 查询?
select * from table where myTextColumn LIKE '%abc%';
原文由 Behzad Qureshi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在用 C# 建立一个查询。对于整数和字符串字段,大小写非常简单。对于日期字段,我使用以下查询:
list.Where("myDateColumn >= DateTime(2017,1,20)");
如何在 LINQ 中执行以下 SQL LIKE 查询?
select * from table where myTextColumn LIKE '%abc%';
原文由 Behzad Qureshi 发布,翻译遵循 CC BY-SA 4.0 许可协议
虽然其他答案(包括接受的答案)是 80% 正确的,但有一些警告。
T-SQL 允许 Like 语句不仅在字符串的开头和结尾使用通配符,而且在中间也可以使用。并且 %
不是语法中唯一的特殊字符,有关详细信息,请参阅 文档。
.NET Core 有 EF.Functions.Like()
直译为 LIKE 语句的方法。请参见下面的示例。
//assuming there is a db context with a table of Foos
await using var dbContext = new SqlContext();
//assuming table of Foos has Ipsum, Iptum, Ipuum
var result = dbContext.Foos.Where(x
=> EF.Functions.Like(x.Bar, "Ip_um"));
注意事项:
NotSupportedException
。EF.Functions.Like
和 Contains
或 StartsWith
之间的 SQL 转换存在显着差异,这可能会 影响性能。如果您确定您正在使用服务器端评估并且性能很重要,请使用 EF.Functions.Like
。
原文由 KifoPL 发布,翻译遵循 CC BY-SA 4.0 许可协议
Linq 中的 Like 有很多可能性:
更新: 如果您还需要添加日期比较意味着您可以执行以下操作: