【发布时间】:2010-04-30 14:38:48
【问题描述】:
我有一个美国州列表
List<string> state // contain all 51 US states
现在我有一个字符串,其中包含一些文本,如 okl(对我来说意味着俄克拉荷马州)。我想要什么,我想在 List 州进行“喜欢”查询并获得俄克拉荷马州。
【问题讨论】:
标签: linq-to-objects
我有一个美国州列表
List<string> state // contain all 51 US states
现在我有一个字符串,其中包含一些文本,如 okl(对我来说意味着俄克拉荷马州)。我想要什么,我想在 List 州进行“喜欢”查询并获得俄克拉荷马州。
【问题讨论】:
标签: linq-to-objects
类似:
var matches = states.Where(state => state.Contains(searchText));
如果大小写也匹配,那很好,但对于不区分大小写的匹配,效果就不那么好了。为此,您可能需要以下内容:
var matches = states.Where(state =>
state.IndexOf(searchText, StringComparison.OrdinalIgnoreCase) != -1);
适当地选择您想要的确切字符串比较 - 例如,您可能想要使用当前文化。
【讨论】:
也检查一下
StartsWith
EndsWith
另一种选择
var query = from c in ctx.Customers
where SqlMethods.Like(c.City, "L_n%")
select c;
【讨论】:
如果您想要一个非常复杂的近似匹配,请查看 http://code.google.com/p/google-diff-match-patch/ 中的 Levenshtein 距离
【讨论】: