检查数据表中是否存在字符串的子字符串

问题描述

我有一个这样的数据表:

  column1    column2
----------- ----------
1  abc d      Alpha
2  ab         Gamma
3  abc de     Harry
4  xyz        Peter

我想检查数据表中是否存在字符串的子字符串。

例如如果我要查找的字符串是“abc defg”,则应该返回记录3(虽然记录1也是匹配的,但记录3在序列中有更多的常见字符)。

我找不到如上所述的任何搜索方式。 任何帮助,指导将不胜感激。

解决方法

这将是一个两步过程。

  1. 过滤表格以查找匹配的行。这可以通过 string.Contains 方法完成。在 LINQ 中,这看起来像:
const string myText = "abc defg";
IEnumerable<Row> matches = MyTable.Where(row => myText.Contains(row.Column1));
  1. 选择最长的匹配。在 LINQ 中,这可能看起来像这样。
Row longestMatch = matches.OrderByDescending<Row,int>(row => row.Column1.Length).First();