如何在string []上将FileInfo转换为FileInfo []?

时间:2016-01-25 05:04:36

标签: c#

我解决了我的问题。但是当我创建构造函数LI变量时出错ListViewItem但是我可以在foreach循环中使用它吗?

ListViewItem LISTA = default(ListViewItem);
foreach (LISTA in this.lstImgAdded.SelectedItems) {

我正在尝试使用我的代码获取列表文件的长度:

string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop, false);
List<FileInfo> fileInfos = new List<FileInfo>();  
foreach (string filePath in filePaths)
{
    FileInfo f = new FileInfo(filePaths);
    fileInfos.Add(f); 

这显示如下错误:

  

无法从'string []'转换为'string'

2 个答案:

答案 0 :(得分:1)

您无法将class转换为class的完全相同的数组。只需使用:FileInfo f = new FileInfo(filePath);代替foreach

此外,获取“文件列表的长度”将与filePaths.Length

相同

如果您需要长度,请改用filePaths.Length

如果您想填充FileInfo,请改为:

string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop, false);
List<FileInfo> fileInfos = new List<FileInfo>();    
foreach (string filePath in filePaths)
{
    FileInfo f = new FileInfo(filePaths);
    fileInfos.Add(f);
    //long s1 = f.Length;
}

并且您的所有文件信息都在fileInfos中,如果您需要列表中的项目数量,请按Count执行此操作:fileInfos.Count

答案 1 :(得分:1)

只需在filePaths循环

中将filePath更改为foreach即可
FileInfo f = new FileInfo(filePath);

另一种方法是改变这样的循环:

foreach (int s1 in filePaths.Select(filePath => new FileInfo(filePath)).Select(f => ((FileInfo[]) f).Length))
{
  //Do somthing with the s1 here
}