如何对列表进行排序<;字符串>;按姓名

本文关键字:gt 字符串 lt 列表 排序 | 更新日期: 2023-09-27 17:51:00

在表格1中,我有:

public List<string> imageList = new List<string>();

然后在构造函数中,我首先尝试只使用以下内容:

this.imageList = Directory.GetFiles(@"e:'webbrowserimages'", "*.bmp").ToList();

但它没有按硬盘上的顺序列出文件。

现在我尝试了这个:

this.imageList = from file in Directory.GetFiles(@"e:'webbrowserimages'", "*.bmp")
                        orderby file descending
                        select file.ToList();

但我在选择时出错了

错误2无法隐式转换类型系统集合。通用的IEnumerable>到系统。集合。通用的列表`。显式转换存在(你错过了一个演员阵容吗?(

如何对列表进行排序<;字符串>;按姓名

适当地包装查询。正如目前所写的,您正试图将字符列表(对字符串调用ToList()的结果(转换为字符串列表,因为您实际上是在文件本身而不是在文件集合上调用ToList()

this.imageList = 
    (from file in Directory.GetFiles(@"e:'webbrowserimages'", "*.bmp")
        orderby file descending
        select file).ToList();
file.ToList()

file是一个字符串,它实现了IEnumerable<char>

因此,file.ToList()List<char>,您选择它作为查询的结果。这会生成一个List<char>的集合,而这不是您想要的。

您需要将查询包装在括号中,以便对查询本身调用.ToList()

你(差不多(到了。问题出在ToList调用中,奇怪的是,它也适用于strings,因为它是IEnumerable<char>。相反,在对Linq查询的结果(如ToList(执行任何操作之前,请确保在其周围写上括号。

this.imageList = 
    (from file in Directory.GetFiles(@"e:'webbrowserimages'", "*.bmp")
                    orderby file descending
                    select file).ToList();

比起sql语法,我更喜欢方法语法。请先致电.OrderBy(f => f),然后再致电.ToList()

Directory.GetFiles(@"e:'webbrowserimages'", "*.bmp").OrderBy(f => f).ToList();

或者,使用.OrderByDescending():

Directory.GetFiles(@"e:'webbrowserimages'", "*.bmp").OrderByDescending(f => f).ToList();

使用目录。EnumerateFiles。

请参阅URL:https://msdn.microsoft.com/en-us/library/system.io.directory.enumeratefiles%28v=vs.110%29.aspx