用linq方式在一組資料夾及兩組資料夾中查詢重複檔案,並可移動或刪除重複檔案
在10萬級別以上檔案中試用,效果良好
一:在一組資料夾中查詢重複檔案
**:
//已讀取完畢的檔案資訊及md5的entity
listarr_filesmd5_tmp = new list();
//....
//要查詢檔案數,
i_checkfilescount = arr_filesmd5_tmp.count;
//linq查詢,重複值》1
list> lstsamefile = arr_filesmd5_tmp.groupby(a => a.str_md5)
.where(g => g.count() > 1).tolist();
//序號
int iindex = 0;
//entity
entity_filewithmd5withcorrespond firstobj = null;
//迴圈(為了找出該檔案對應的重複檔案)
lstsamefile.foreach(a =>
// igroupin**ar lsttmp = a.tolist();
//lsttmp.foreach(b =>
else
//序號
iindex++;
});});
二:在兩組資料夾中查詢重複檔案
**:
//已讀取完畢的檔案資訊及md5的entity
listarr_filesmd5_tmp1 = new list();
listarr_filesmd5_tmp2 = new list();
//....
//ienumerable// enumerable.joiniteratorvar lstsamefile = from g2 in arr_filesmd5_tmp2
join g1 in arr_filesmd5_tmp1
on g2.str_md5 equals g1.str_md5
select new entity_filewithmd5withcorrespond()
;//去除其中重複的項
//listg_lstdelfiles = lstsamefile.groupby(p => p.str_file_name_del)
.select(g => g.first())
.tolist();
三:檔案的md5讀取類
注:為提高對檔案讀取速度,對於大於20k左右的檔案,讀取首位約10k資料
using system;
using system.collections.generic;
using system.text;
using system.io;
using system.security.cryptography;
namespace dmassistantsystem
return stemp.tolower();
}/// /// 二進位製流的md5加密
///
///
///
public static string ge***5forbina(byte btar)
return g_sb.tostring().tolower();
}/// /// 對檔案流進行md5加密
///
///
///
public static string ge***5forfile(string strfilepath)
return g_sb.tostring().tolower();
}else
}//catch (exception ee)
catch (exception ee) ;
}#endregion}}
用linq方式查詢重複檔案 linq指定列查詢 去重複 排序 top行
cnt.dlx newssendto where x x.newsid nid x.sendtype 2 select s new distinct tolist orderbydescending s s.sendto take 10 說明 where 裡面為查詢條件 select 為查詢的篩選條...
用LINQ在集合中查詢特定物件
這裡是原文出處 簡單的概括linq linq是language integrated query的縮寫,是c 3.0和vb 9.0中新加入的語言特性,可以在程式設計時使用內建的查詢語言進行基於集合的操作。listuserlist getuserlist var userwithoddid from ...
重複檔案清理查詢
duplicateviewer mac版是一款可以在蘋果電腦mac os平台上使用的重複檔案查詢工具,duplicateviewer mac版能夠幫你快速找出磁碟中有哪些檔案是重複的,還可以幫你找出哪些檔案占用了大量的磁碟空間,你可以將這些重複的 大體積的檔案進行刪除以節省磁碟空間。拖動或新增要掃瞄...