SQL C# 中的 LIKE 等价物

SQL LIKE Equivalent in C#

我的问题使用了以下代码 -

string searchString = dropdownlist.SelectedValue;

List objects = (from o in Object.List()
                       where dropdownlist.SelectedIndex <= 0 || 
                           o.CustomField.Contains(searchString)
                       orderby o.Date descending
                       select order).ToList();

我 运行 的情况如下 - 下拉列表中的项目是通用消息,例如 "Customer '{0}' has '{1}' orders"。在对象方面,o.CustomField 看起来像 "Customer 'Bob' has '5' orders"。显然,这意味着

o.CustomField.Contains(searchString)

不会return任何东西。我一直在研究通配符,但未能取得成功 return。这就是我尝试设置通配符的方法:

searchString = dropdownlist.SelectedValue.Replace("{0}", "*").Replace("{1}", "*");

我想知道是否有比坐下来解析“{”或“}”之间的所有不同子字符串更简洁的方法。

您可以通过使用正则表达式来实现您的目标。请参阅 Regex.Match 方法。 您可以将下拉列表中的所选字符串转换为正则表达式,然后在 LINQ 查询中使用 Match 方法。

Regex r = new Regex(String.Format ("Customer {0} has {1} orders", "([^\s]+)",  "([^\s]+)"));

此代码:

o.CustomField.Contains(searchString)

然后可以改成:

r.Match(o.CustomField).Success

只需在 {\d+} 上执行 Regex.Replace,将其替换为 *

类似于:

string s = Regex.Replace(input, @"{\d+}", "*");

尝试提到的方法here 或者使用 field.StartsWith("Customers") && field.EndsWith("orders") && field.Contains("has")

的组合