【发布时间】:2010-09-05 19:13:37
【问题描述】:
我有一个函数可以检查一个字符串是否代表另一个字符串下的文件系统位置。然而,我的问题应该适用于任何返回布尔值的函数。
无论如何,这里是函数......
private bool IsItemBelowPath(string item, string path)
{
if (path == Path.GetPathRoot(path))
{
path = path.TrimEnd('\\');
}
if (item.Length < path.Length + 2)
return false;
return (string.Compare(item, 0, path, 0, path.Length, StringComparison.OrdinalIgnoreCase) == 0 &&
item[path.Length] == Path.DirectorySeparatorChar);
}
我有一个列表,其中包含我喜欢过滤的文件和文件夹路径(使用上述功能),这样就不会发生嵌套。
这些路径
- C:\路径
- C:\Path\SubPath
- C:\Path\File.txt
- D:\
- D:\路径
- D:\File.txt
应该变成
- C:\路径
- D:\
我需要将所有路径与所有其他路径进行比较并返回正确的路径。
我对开发很陌生,但怀疑使用上述函数的 LINQ 语句可以完成此操作,我尝试了以下方法,但结果错误
var items = new List<string> { my paths.... }
return (from i1 in items
from i2 in items
where !IsItemBelowPath(i1, i2)
select i2).Distinct().ToList();
感谢您的帮助。
【问题讨论】: