【问题标题】:Like query ing LINQ to Object类似于 LINQ to Object 中的查询
【发布时间】:2010-04-30 14:38:48
【问题描述】:

我有一个美国州列表

List<string> state // contain all 51 US states

现在我有一个字符串,其中包含一些文本,如 okl(对我来说意味着俄克拉荷马州)。我想要什么,我想在 List 州进行“喜欢”查询并获得俄克拉荷马州。

【问题讨论】:

    标签: linq-to-objects


    【解决方案1】:

    类似:

    var matches = states.Where(state => state.Contains(searchText));
    

    如果大小写也匹配,那很好,但对于不区分大小写的匹配,效果就不那么好了。为此,您可能需要以下内容:

    var matches = states.Where(state => 
          state.IndexOf(searchText, StringComparison.OrdinalIgnoreCase) != -1);
    

    适当地选择您想要的确切字符串比较 - 例如,您可能想要使用当前文化。

    【讨论】:

      【解决方案2】:

      也检查一下

        StartsWith
         EndsWith
      

      另一种选择

       var query = from c in ctx.Customers
                      where SqlMethods.Like(c.City, "L_n%")
                      select c;
      

      【讨论】:

        【解决方案3】:

        如果您想要一个非常复杂的近似匹配,请查看 http://code.google.com/p/google-diff-match-patch/ 中的 Levenshtein 距离

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-17
          相关资源
          最近更新 更多