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