【问题标题】:lambda search in combined string组合字符串中的 lambda 搜索
【发布时间】:2013-07-23 11:09:18
【问题描述】:

这是我的表格数据,

 Areas                           Cities
==============================================================
Area1                   City1 , City2 , City3 , City4
Area2                   City5 , City6 , City7 , City8
Area3                   City9 , City10 , City11 , City12
Area4                   City13 , City14 , City15 , City16

如果我给出值 City1 ,我想得到 Area1
(例如 City7 => Area2 , City14 => Area4)。
有没有使用 Lambra Expression 的捷径?

【问题讨论】:

    标签: c# string lambda contain


    【解决方案1】:

    试试这个代码:

    yourDataTable.First(x => x.Cities.Split(',').Any(y => y.Trim() == "City1"))
    

    搜索词是City 1之类的字符串

    【讨论】:

    • 使用x.Cities.Split(',').Contains(SearchTerm)会简单一些。
    • 它给了我错误信息Comparison operators not supported for type 'System.String[]'.
    • 用 Damith 提示编辑到以前的版本以使用修剪
    • 尝试将 string[] 的变量转换为 List,它应该可以解决您的错误。
    【解决方案2】:

    如果您需要完全匹配,请尝试

    var rec = tbl.ToList().FistOrDefault(x => x.Cities.Split(',')
                                      .Any(City => City == SearchTerm));
    

    Contains 会给出错误的结果,因为如果你搜索 City1 它甚至会匹配 City11

    注意:

    由于, 之前有空格,您需要调用Trim 方法来获取单词,如果您需要进行大小写密集搜索,请执行以下操作

    var rec = tbl.ToList().FistOrDefault(x => x.Cities.Split(',')
                                      .Any(City => City.Trim().Equals(SearchTerm, StringComparison.InvariantCultureIgnoreCase)));
    

    【讨论】:

    • 它给了我错误信息Comparison operators not supported for type 'System.String[]'.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2021-09-04
    • 1970-01-01
    • 2017-01-21
    • 2020-08-04
    • 2014-10-06
    • 2012-01-13
    相关资源
    最近更新 更多