如何实现这样的循环文件夹文件

liujiahaol12345 2016-12-29 04:37:11
要导入不同类型的文件到项目中,比如d盘有文件夹chr,tmf,dbg等等文件夹,数量不定,现在我要一个组合,chr和tmf文件夹的文件是每次所有都导入,其他文件夹文件只导入一个,要每个文件都能导入一次,求所有组合这种算法,每个组合最好根据文件夹名形成字典,我好传递
...全文
251 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
List<string> dbgs;
List<string> others;
List<string> chrAndtmfs;
var query = from d in dbgs
            from o in others
            from ct in chrAndtmfs
            select new string[] { d, o, ct };
你这不就是笛卡尔么
xinbada1985 2016-12-30
  • 打赏
  • 举报
回复
以后只需要维护这个数据字典就可以了!
xinbada1985 2016-12-30
  • 打赏
  • 举报
回复
首先你要制定一个数据字典,主要设定哪些有特殊需求的文件类型,以及取得文件的方式,然后在遍历文件夹,遇到数据字典中的文件类型,就按照你设定的取得方式来处理,如果不在字典表中的类型,统一形式处理,电脑程序毕竟不是人,他只能按照你给出的类型和处理方式来判断执行,他没办法自己判断什么文件做什么处理。
liujiahaol12345 2016-12-29
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
Dictionary<string, string> dic = new Dictionary<string, string>
{
    { ".dbg","dbg"},
    {".chr","chr tmf" },
    {".tmf","chr tmf" }
};
List<string> files = new List<string>
{
    "a.chr","1.tmf","x1.dbg",
    "y1.dbg","b.chr","7.tmf",
    "z.tmf","demo.txt"
};
var query = files.GroupBy(f => {
    var ext = Path.GetExtension(f).ToLower();
    if (dic.ContainsKey(ext))
        return dic[ext];
    return "other";
});
foreach (var g in query)
{
    Console.WriteLine("写入{0}",g.Key);
    Console.WriteLine("文件名:{0}", string.Join("  ", g));
}
这个有点类似笛卡尔积,求每种类型文件的组合,只是chr文件和tmf文件是取所有文件,我算法不好,举个例子,一种组合是dbg取第一个文件,alarm取第一个文件,chr取所有文件。第二种组合是dbg取第一个文件,alarm取第二个文件,chr取所有文件。依次类推,因为文件类型太多,我没法一个一个去指定取哪一个
  • 打赏
  • 举报
回复
Dictionary<string, string> dic = new Dictionary<string, string>
{
    { ".dbg","dbg"},
    {".chr","chr tmf" },
    {".tmf","chr tmf" }
};
List<string> files = new List<string>
{
    "a.chr","1.tmf","x1.dbg",
    "y1.dbg","b.chr","7.tmf",
    "z.tmf","demo.txt"
};
var query = files.GroupBy(f => {
    var ext = Path.GetExtension(f).ToLower();
    if (dic.ContainsKey(ext))
        return dic[ext];
    return "other";
});
foreach (var g in query)
{
    Console.WriteLine("写入{0}",g.Key);
    Console.WriteLine("文件名:{0}", string.Join("  ", g));
}
  • 打赏
  • 举报
回复

List<string> files = new List<string>
{
    "a.chr","1.tmf","x1.dbg",
    "y1.dbg","b.chr","7.tmf",
    "z.tmf",
};
var query = files.GroupBy(f => Path.GetExtension(f).ToLower());
foreach (var g in query)
{
    Console.WriteLine("写入{0}",g.Key);
    Console.WriteLine("文件名:{0}", string.Join("  ", g));
}
liujiahaol12345 2016-12-29
  • 打赏
  • 举报
回复
我想得到组合的集合,一个组合是一个字典,我好循环每种情况
liujiahaol12345 2016-12-29
  • 打赏
  • 举报
回复
我想得到组合中的一个怎么弄,也就是dbg一个文件,chr和tmf是所有文件,还有其他文件夹的一个文件
  • 打赏
  • 举报
回复
遍历所有文件夹,将文件写入到字典Dictionary<string,List<string>> dict中,dict.key=文件夹,dict.Value=文件集合

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧