C#使用LINQ查找同名文件示例

1.文件结构

引用内容 引用内容
F:\test
├a
│└b.txt
├b.txt
└c.xls

2.C#代码

引用命名空间:
using System;
using System.IO;
using System.Linq;

代码一:使用IEnumerable<TSource>.GroupBy<TSource, TKey>
DirectoryInfo dir = new DirectoryInfo(@"F:\test");
if (dir.Exists)
{
    FileInfo[] files = dir.GetFiles("*.*", SearchOption.AllDirectories);
    var query = from item in files.GroupBy(f => f.Name).Where(g => g.Count() > 1)
                select new { Name = item.First().Name, Count = item.Count() };
    foreach (var item in query)
        Console.WriteLine("{0},{1}", item.Name, item.Count);
}

代码二:使用group...by...into...
DirectoryInfo dir = new DirectoryInfo(@"F:\test");
if (dir.Exists)
{
    FileInfo[] files = dir.GetFiles("*.*", SearchOption.AllDirectories);
    var query = from item in files
                group item by item.Name into g
                where g.Count() > 1
                select new { Name = g.First().Name, Count = g.Count() };
    foreach (var item in query)
        Console.WriteLine("{0},{1}", item.Name, item.Count);
}

3.测试结果

引用内容 引用内容
b.txt,2


评论: 0 | 引用: 0 | 查看次数: 4319
发表评论
登录后再发表评论!