在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`。显式转换 存在(你是否错过演员表?)
答案 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)
使用Directory.EnumerateFiles。
请参阅网址:https://msdn.microsoft.com/en-us/library/system.io.directory.enumeratefiles%28v=vs.110%29.aspx