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")
的组合
我的问题使用了以下代码 -
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")