C# ,.net 對比兩個List的方法 親測


方案一:for等循環方法 效率過慢 數據量過大時容易卡死 不建議使用 
方案二:取交集 

var intersection = datalist.Intersect(ExelLsit., new TarGetComparer()).ToList();

//需要重寫IEqualityComparer Equals 

/// </summary>
//public class TarGetComparer : IEqualityComparer<arko_dim_update_id_trial>
//{
// public bool Equals(arko_dim_update_id_trial x, arko_dim_update_id_trial y)
// {
// try
// {

//需要對比的字段 
// return x.fd_table == y.fd_table
// && x.fd_field == y.fd_field
// && x.fd_id_field == y.fd_id_field
// && x.fd_id_value == y.fd_id_value;

//如需對比整條數據  可直接return x==y;

// }
// catch (Exception ex)
// {
// return base.Equals(x);
// }
// }
// public int GetHashCode(arko_dim_update_id_trial obj)
// {
// return 1;
// }
//}

相比循環較快 但當數據量超過十萬以上也會很慢  不建議使用‘;

 

方案三:此時需要換個思路 采用分組來對比

//首先 
var existenceList = list1.Concat(list2).ToList();//合並兩個集合

//分組找到重復數據
var existenceList = existenceList.GroupBy(x => x)
    .Where(x => x.Count() > 1)
    .ToList();

//找到不重復數據
var existence = existenceList.GroupBy(x => x).ToList();

此時不僅節省代碼 效率更是大大提升;
            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM