首页 > Windows开发 > 详细

C# ,.net 对比两个List的方法 亲测

时间:2021-01-08 18:22:09      阅读:48      评论:0      收藏:0      [点我收藏+]

方案一: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();

此时不仅节省代码 效率更是大大提升;
            

C# ,.net 对比两个List的方法 亲测

原文:https://www.cnblogs.com/jmf0529/p/14252438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!