【问题标题】:Compare 2 List<string> with a LIKE clause将 2 List<string> 与 LIKE 子句进行比较
【发布时间】:2013-09-09 13:00:50
【问题描述】:

我有 2 个列表,一个是文件名列表,第二个是文件名存根列表,我想从第一个列表中选择文件名与文件名存根类似的所有内容。

List<string> files = new List<string>() {"a.txt", "b.txt", "c.txt"};
List<string> fileStub = new List<string>() {"a", "b", "c"};

查询将返回第一个列表中的所有记录。

提前致谢。

【问题讨论】:

标签: c# linq list


【解决方案1】:
var results = files.Where(x => fileStub.Any(y => x.Contains(y))).ToList();

【讨论】:

  • 你比我快 2 分钟 :)
  • 完美。我知道会是这样的!谢谢!
【解决方案2】:

如果顺序很重要(当然,对于这个示例,两个列表的大小很重要,如果您不希望出现 IndexOutOfRange 异常)

var res = files.Where((file, index) => file.Contains(fileStub[index]));

如果您不介意顺序(列表大小并不重要)

var res = files.Where(file => fileStub.Any(fs => file.Contains(fs)));

【讨论】:

    【解决方案3】:
    var result = files.Where(item => fileStub.Any(stub => item.Contains(stub))).ToList();
    

    【讨论】:

      【解决方案4】:

      使用AnyContains 方法。

      List<string> files = new List<string>() {"a.txt", "b.txt", "c.txt"};
      List<string> fileStub = new List<string>() {"a", "c"};
      var result = files.Where(x => fileStub.Any(y => x.Contains(y))).ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 2020-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多