我的问题使用以下代码 -
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}", "*");
我想知道是否有更干净的方式,而不是坐下来解析'{'或'}'之间的所有不同的子串。
答案 0 :(得分:0)
您可以使用正则表达式来实现目标。请参阅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
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试提及的方法here
或者使用field.StartsWith("Customers") && field.EndsWith("orders") && field.Contains("has")