Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按文件扩展名将文件分组时获取第一个文件名_C#_Linq - Fatal编程技术网

C# 按文件扩展名将文件分组时获取第一个文件名

C# 按文件扩展名将文件分组时获取第一个文件名,c#,linq,C#,Linq,我有父文件夹和子文件夹 所有文件的扩展名都是我生成的guid。guid可以相同也可以不同 文件名是文件的时间戳 目前,我使用以下代码获得每个组的计数: var query = Directory.EnumerateFiles("c:\\Catalogues", "*.*", SearchOption.AllDirectories) .GroupBy(file => Path.GetExtension(file)) .Select(grp => new {

我有父文件夹和子文件夹

所有文件的扩展名都是我生成的guid。guid可以相同也可以不同

文件名是文件的时间戳

目前,我使用以下代码获得每个组的计数:

var query = Directory.EnumerateFiles("c:\\Catalogues", "*.*", SearchOption.AllDirectories)
   .GroupBy(file => Path.GetExtension(file))
   .Select(grp => new
   {
       Extension = grp.Key,
       Count = grp.Count()
   }).ToList();

我需要获得每个“组”的文件名的第一个匹配项。我可以使用单独的linq来执行此操作,但我想知道是否可以在1个linq语句中完成

这可以像计算每个组中的文件数一样完成

var query = Directory.EnumerateFiles("c:\\Catalogues", "*.*", SearchOption.AllDirectories)
   .GroupBy(file => Path.GetExtension(file))
   .Select(grp => new
   {
       Extension = grp.Key,
       FileName = grp.First(),
       Count = grp.Count()
   }).ToList();

谢谢,但我收到一个错误,告诉我“字符串不包含名称的定义”,我要等9分钟才接受你的答案,但我会的asap@AndrewSimpson,如果不需要文件的完整路径,也可以使用
FileName=Path.GetFileName(grp.First())