【发布时间】:2015-12-19 13:50:06
【问题描述】:
我有一个List,其中包含我需要的所有远程路径
List<string> remotePath = MyTableWithRemotePath.Select(i => i.ID_SERVER_PATH).ToList();
我有一个字符串,它是我要查找的服务器。
string remotePath = "Path I'm looking for";
我必须找到与我要查找的路径更匹配的列表路径。
我试过了,但它不起作用
var matchingvalues = remotePath.FirstOrDefault(stringToCheck => stringToCheck.Contains(remotePath));
有什么建议吗?
编辑
例子:
我必须找到这条路径的最佳匹配:C:\\something\\location\\
这是我的清单:
- C:\\something\\location\\XX\\
- C:\\something\\location2\\YY\\
- C:\\something\\location3\\AA\\
- C:\\something\\location4\\CS\\
结果必须是第一个元素:
C:\\something\\location\\directory\\
【问题讨论】:
-
你能解释一下“更好的匹配”吗?可以举一些例子吗?
-
“我必须找到与我正在寻找的路径更匹配的列表路径”是什么意思。您是否只是想对您的字符串进行部分匹配,寻找具有最匹配字符的内容?如果是这样,也许您可以将
PathImLookingFor分解为单独的目录,并在列表中查找包含这些目录的项目,按照匹配最多到最少的顺序。 -
@sab669 完全正确。就是这样
-
您的意思是像 SQL
LIKE运算符?或者更像谷歌的东西,如果你输入foopd,就会找到food? -
@Thomas 取 3 个字符串:前两个是我们正在检查的字符串,第三个字符串是我们想要找到最接近匹配的字符串。
"C:\some\directory\is\here\"、"C:\some\directory\over\here"是remotePath中的两个值。"\directory\is\"是我们想要找到最接近匹配的字符串。因此,虽然前两个字符串在其路径中都包含directory,但第一个是“更好的匹配”,因为它包含更多匹配的目录。