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

C# 如何对列表进行排序<;字符串>;按姓名,c#,.net,winforms,C#,.net,Winforms,在表格1中,我有: public List<string> imageList = new List<string>(); 但是它没有按顺序列出文件,因为它们在硬盘上 现在我试着这样做: this.imageList = from file in Directory.GetFiles(@"e:\webbrowserimages\", "*.bmp") orderby file descending

在表格1中,我有:

public List<string> imageList = new List<string>();
但是它没有按顺序列出文件,因为它们在硬盘上

现在我试着这样做:

this.imageList = from file in Directory.GetFiles(@"e:\webbrowserimages\", "*.bmp")
                        orderby file descending
                        select file.ToList();
但我在select上遇到错误:

错误2无法隐式转换类型 System.Collections.Generic.IEnumerable> 到System.Collections.Generic.List`。显式转换 存在(您是否缺少演员阵容?)


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

this.imageList = 
    (from file in Directory.GetFiles(@"e:\webbrowserimages\", "*.bmp")
        orderby file descending
        select file).ToList();
file
是一个字符串,它实现了
IEnumerable

因此,
file.ToList()
是一个
列表
,您选择它作为查询结果。这将生成一个
列表
的集合,这不是您想要的

您需要将查询用括号括起来,以便对查询本身调用
.ToList()

您已经(几乎)做到了。您遇到的问题是
ToList
调用,它奇怪地也适用于
string
s,因为它是一个
IEnumerable
。相反,在对Linq查询的结果执行任何操作(如
ToList
)之前,请确保在Linq查询周围写上括号

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

使用Directory.exe文件


请参见URL:

我更喜欢方法语法而不是sql语法。在调用
.ToList()
之前先调用

或使用:

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