将文件名返回为字符串

时间:2014-10-30 10:48:59

标签: c# string linq contains fileinfo

我有一个List< FileInfo> fileList和我正在尝试创建一个包含文件名的变量,如下面的代码:

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

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

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

我需要将文件名作为字符串获取,因为我想检查另一个List<字符串> filesTemp已经包含newFileName。

if (!filesTemp.Contains(newFileName))

为什么我提到的值和如何获得文件的实际名称?

感谢您的帮助

4 个答案:

答案 0 :(得分:1)

Select返回一个延迟评估的集合,您需要使用FirstOrDefault从集合中获取第一个值。

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

但是这仅适用于单个文件名,您可以使用if语句中的Any方法来检查fileList中是否存在filesTemp中的任何名称}。

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

答案 1 :(得分:1)

我们将从属性FileInfo.Name

中获取文件的名称

由于您尚未确定select中的任何文件,您可以按以下方式获取文件名。

fileList[0].Name

如果要根据名称选择文件,

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

答案 2 :(得分:0)

替换

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

通过

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

它将返回文件名列表,然后进行比较

答案 3 :(得分:-1)

好像你的问题是关于聚合。

我认为以下链接应该是您正在寻找的内容: Concat all strings inside a List<string> using LINQ