[英]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();
我遇到的情况如下 - 下拉列表中的项目是通用消息,例如“客户'{0}'具有'{1}'订单”。 在对象方面,o.CustomField看起来像“客户'鲍勃'有'5'订单”。 显然,这意味着
o.CustomField.Contains(searchString)
不会退货。 我一直在研究通配符,但未能获得成功的回报。 这就是我尝试使用通配符的方法:
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
尝试这里提到的方法或使用field.StartsWith("Customers") && field.EndsWith("orders") && field.Contains("has")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.