LINQ中的LIKE运算子

编程入门 行业动态 更新时间:2024-10-22 13:35:34
本文介绍了LINQ中的LIKE运算子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

Is there any way to compare strings in a C# LINQ expression similar to SQL's LIKE operator?

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

Suppose I have a string list. On this list I want to search a string. In SQL, I could write:

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

查询要使用linq语法,而不是上面的

Instead of the above, query want a linq syntax.

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

我上面的LINQ语法不起作用.我怎么了?

My above LINQ syntax does not work. What have I got wrong?

推荐答案

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

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

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

I don't know if there's a way of doing proper regular expressions via LINQ to SQL though. (Note that it really does depend on which provider you're using - it would be fine in LINQ to Objects; it's a matter of whether the provider can convert the call into its native query format, e.g. SQL.)

正如BitKFu所说的,当您期望一个精确的结果时应使用Single-如果不是这样的话是错误的.应根据期望的确切使用SingleOrDefault,FirstOrDefault或First的选项.

As BitKFu says, Single should be used when you expect exactly one result - when it's an error for that not to be the case. Options of SingleOrDefault, FirstOrDefault or First should be used depending on exactly what's expected.

更多推荐

LINQ中的LIKE运算子

本文发布于:2023-10-14 22:21:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1492384.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:LINQ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!