gpt4 book ai didi

c# - LINQ 中的 LIKE 运算符

转载 作者:IT王子 更新时间:2023-10-29 03:38:31 25 4
gpt4 key购买 nike

有什么方法可以在类似于 SQL 的 LIKE 运算符的 C# LINQ 表达式中比较字符串?

假设我有一个字符串列表。在此列表中,我想搜索一个字符串。在 SQL 中,我可以这样写:

SELECT * FROM DischargePort WHERE PortName LIKE '%BALTIMORE%'

查询需要 linq 语法而不是上面的语法。

using System.Text.RegularExpressions;


var regex = new Regex(sDischargePort, RegexOptions.IgnoreCase);
var sPortCode = Database.DischargePorts
.Where(p => regex.IsMatch(p.PortName))
.Single().PortCode;

我上面的 LINQ 语法不起作用。我做错了什么?

最佳答案

通常您使用 String.StartsWith/EndsWith/Contains。例如:

var portCode = Database.DischargePorts
.Where(p => p.PortName.Contains("BALTIMORE"))
.Single()
.PortCode;

不过,我不知道是否有办法通过 LINQ to SQL 执行正确的正则表达式。 (请注意,它确实取决于您使用的是哪个提供程序 - 在 LINQ to Objects 中会很好;这取决于提供程序是否可以将调用转换为其 native 查询格式,例如 SQL。)

编辑:正如 BitKFu 所说,Single 应该在您期望 exactly one 结果时使用 - 如果不是这种情况是错误的。 SingleOrDefaultFirstOrDefaultFirst 的选项应根据确切的预期使用。

关于c# - LINQ 中的 LIKE 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com