检查数据表中是否存在字符串的子字符串
Check if substring of a string exists in datatable
我有一个这样的数据表:
column1 column2
----------- ----------
1 abc d Alpha
2 ab Gamma
3 abc de Harry
4 xyz Peter
我想检查数据表中是否存在字符串的子字符串。
例如如果我要查找的字符串是“abc defg”,则应该返回记录3(虽然记录1也是匹配的,但记录3的常用字符顺序比较多)。
我无法找到任何如上所述的搜索方式。
任何帮助,指导将不胜感激。
这将是一个两步过程。
- 过滤 table 匹配的行。这可以通过 string.Contains 方法来完成。在 LINQ 中,这看起来像:
const string myText = "abc defg";
IEnumerable<Row> matches = MyTable.Where(row => myText.Contains(row.Column1));
- Select最长匹配。在 LINQ 中,这可能看起来像这样。
Row longestMatch = matches.OrderByDescending<Row, int>(row => row.Column1.Length).First();
我有一个这样的数据表:
column1 column2
----------- ----------
1 abc d Alpha
2 ab Gamma
3 abc de Harry
4 xyz Peter
我想检查数据表中是否存在字符串的子字符串。
例如如果我要查找的字符串是“abc defg”,则应该返回记录3(虽然记录1也是匹配的,但记录3的常用字符顺序比较多)。
我无法找到任何如上所述的搜索方式。 任何帮助,指导将不胜感激。
这将是一个两步过程。
- 过滤 table 匹配的行。这可以通过 string.Contains 方法来完成。在 LINQ 中,这看起来像:
const string myText = "abc defg";
IEnumerable<Row> matches = MyTable.Where(row => myText.Contains(row.Column1));
- Select最长匹配。在 LINQ 中,这可能看起来像这样。
Row longestMatch = matches.OrderByDescending<Row, int>(row => row.Column1.Length).First();