2014-10-30 75 views
-1

我有一个List <的FileInfo>的文件列表并我试图让包含文件名称,如下面的代码的变量:返回一个文件名作为字符串

var newFileName = fileList.Select(x => x.Name).ToString(); 

现在我希望newFileName到价值是文件的名字,但我得到的价值是这样的:

System.Linq.Enumerable+WhereSelectListIterator`2[System.IO.FileInfo,System.String] 

我需要的文件名作为字符串becouse我要检查,如果另一个列表<字符串> filesTemp已经包含了newFileName。

if (!filesTemp.Contains(newFileName)) 

为什么值如我所说,我怎样才能得到文件的实际名称?

感谢所有帮助

+1

请出示的fileList声明 – Aymeric 2014-10-30 10:50:41

+0

项目Type'什么'是'fileList'?字符串? FileInfo中? – ispiro 2014-10-30 10:50:48

+0

对不起,我编辑了它 – Simon 2014-10-30 10:52:40

回答

1

Select返回懒洋洋地评估集合,你需要使用FirstOrDefault获得从集合中第一个值。

var newFileName = fileList.Select(x => x.Name).FirstOrDefault(); 

但是,这仅适用于单个文件名,你可以在if语句中使用Any方法来代替,以检查是否有任何的名字从fileList存在于filesTemp

var isInTemp = fileList.Any(x => filesTemp.Contains(x.Name)); 
0

更换

var newFileName = fileList.Select(x => x.Name).ToString(); 

通过

IList<string> newFileName = fileList.Select(x => x.Name).ToList(); 

它会返回文件名列表,然后做你的比较

1

我们将从物业FileInfo.Name

获取文件的名称不挥霍在选择确定的任何文件,你可以得到的文件名类似下面的方式。

fileList[0].Name 

如果你想根据名称来选择文件,

fileList.Select(x => x.Name == name).ToList(); // Select file according to specific name. 
相关问题