我有一个函数,用于检查字符串是否代表另一个字符串下的文件系统位置。然而,我的问题应该适用于返回布尔值的任何函数。通过单独的函数将列表中的项目彼此比较
这里是无论如何功能...
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:\路径\子路径
- C:\路径\ 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();
感谢您的帮助。
感谢您看起来像您的示例正在工作 – risc 2010-09-05 19:56:27