类型&#39; System.Collections.Generic.IEnumerable <string>&#39;不能隐式转换为&#39; string []&#39; </string>

时间:2014-07-30 16:08:49

标签: c# .net linq

我有一个问题,我想你可以帮助我,我有这个代码:

string[] A1 = 
    Directory
        .GetFileSystemEntries(textbox2_f2.Text, "*", SearchOption.AllDirectories)
        .Select(System.IO.Path.GetFileName);

for (int i1 = 0; i1 < A1.Length; i1++)
    listbox_2f.Items.Add(A1[i1]);

这是错误:

  

类型&#39; System.Collections.Generic.IEnumerable&#39;不可能是   隐式转换为&#39; string []&#39;。已经明确了   转换存在。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

尝试:

Directory.GetFileSystemEntries(textbox2_f2.Text, "*", SearchOption.AllDirectories)
    .Select(System.IO.Path.GetFileName)
    .ToArray()

答案 1 :(得分:1)

此代码:

Directory.GetFileSystemEntries(textbox2_f2.Text, "*", SearchOption.AllDirectories)

返回string[]很好

但是你把Select放在上面。 Select返回IEnumerable,无法直接将其分配给数组。

然后,您可以调用ToArray()并按原样使用,但您也可以直接使用IEnumerable(并节省转换所需的时间)。

//A1 will be IEnumerable<String>
var A1 = Directory.GetFileSystemEntries(textbox2_f2.Text, "*", SearchOption.AllDirectories)
    .Select(System.IO.Path.GetFileName);

foreach (var a in A1)
{
    listbox_2f.Items.Add(a);
}