【问题标题】:How can i sort a List<string> by name?如何按名称对 List<string> 进行排序?
【发布时间】:2015-05-28 20:57:54
【问题描述】:

在 form1 顶部我有:

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> 到 System.Collections.Generic.List`。显式转换 存在(您是否缺少演员表?)

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      file.ToList()
      

      file是一个字符串,它实现了IEnumerable&lt;char&gt;

      因此,file.ToList()List&lt;char&gt;,您选择它作为查询的结果。这会产生List&lt;char&gt;s 的集合,这不是您想要的。

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

      【讨论】:

        【解决方案3】:

        你(几乎)在那里。您遇到的问题出在ToList 调用中,奇怪的是它也适用于strings,因为它是IEnumerable&lt;char&gt;。相反,请确保在对其结果执行任何操作之前在 Linq 查询周围写上括号,例如 ToList

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

        【讨论】:

          【解决方案4】:

          我更喜欢方法语法而不是 sql 语法。在拨打.ToList()之前先拨打.OrderBy(f =&gt; f)

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

          或者,使用.OrderByDescending()

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

          【讨论】:

            【解决方案5】:

            【讨论】:

              猜你喜欢
              • 2017-11-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多