zoukankan      html  css  js  c++  java
  • 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();

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

    学如逆水行舟 不进 则退!
  • 相关阅读:
    CF 526F Max Mex(倍增求LCA+线段树路径合并)
    CoderForces Round526 (A~E)题解
    牛客OI周赛4-提高组 A K小生成树(kmst)
    Codeforces 1072 C
    Codeforces 1053 C
    牛客国庆集训派对Day3 B Tree
    牛客国庆集训派对Day3 I Metropolis
    牛客国庆集训派对Day3 A Knight
    牛客国庆集训派对Day3 G Stones
    Codeforces 1053 B
  • 原文地址:https://www.cnblogs.com/jmf0529/p/14252438.html
Copyright © 2011-2022 走看看