有人可以告诉我以下Linq查询在做什么错吗?我试图找到具有最高幻影值的目录。

        DirectoryInfo[] diList = currentDirectory.GetDirectories();

        var dirs = from eachDir in diList
                   orderby eachDir.FullName descending
                   select eachDir;
        MessageBox.Show(dirs[0].FullName);

编辑:

上面的代码无法编译,编译器生成的错误是:
Cannot apply indexing with [] to an expression of type 'System.Linq.IOrderedEnumerable<System.IO.DirectoryInfo>

最佳答案

您正在尝试访问dirs,就像它是数组或列表一样。这只是一个IEnumerable<T>。试试这个:

var dirs = diList.OrderByDescending(eachDir => eachDir.FullName);
var first = dirs.FirstOrDefault();
// Now first will be null if there are no directories, or the first one otherwise

请注意,我这里没有使用查询表达式,因为对于单个子句来说,这似乎毫无意义。您也可以将所有内容放在一个语句中:
var first = currentDirectory.GetDirectories()
                            .OrderByDescending(eachDir => eachDir.FullName)
                            .FirstOrDefault();

10-05 22:27