如何对列表进行排序<;字符串>;按姓名
本文关键字: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
调用中,奇怪的是,它也适用于string
s,因为它是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