如何按名称对List <string>进行排序?

时间:2015-05-28 20:57:54

标签: c# .net winforms

在form1 top我有:

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无法隐式转换类型   System.Collections.Generic.IEnumerable&GT;   到System.Collections.Generic.List`。显式转换   存在(你是否错过演员表?)

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

file.ToList()

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

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

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

答案 2 :(得分:1)

你(几乎)在那里。您遇到的问题是ToList调用,这对于string来说也很奇怪,因为它是IEnumerable<char>。相反,在对结果执行任何操作之前,请确保在Linq查询周围编写括号,例如ToList

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

答案 3 :(得分:0)

我更喜欢sql语法的方法语法。在致电.ToList()之前致电.OrderBy(f => f)

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

或者,使用.OrderByDescending()

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

答案 4 :(得分:-1)