zoukankan      html  css  js  c++  java
  • 泛型的Distinct(IEqualityComparer)的用法

    有的时候我们需要对重复数据进行过滤,

    针对数组可以用List.Distinct(),可以过滤掉重复的内容,

    而针对对象中的某些字段只能用Distinct(IEqualityComparer<T>)

    代码示例如下:

    方法:

    View Code
    /// <summary>
    /// 判断是否包含Oracle错误
    /// </summary>
    private bool HasOracleError(string input)
    {
    bool hasError = false;
    //白名单
    string[] ignoreList = Rondi.Commons.AppSettingConfig.Instance.IgnoreOracleCode;
    Regex regex
    = new Regex(@"ORACLE 错误 (\d+)", RegexOptions.IgnoreCase);
    List
    <string> lst = new List<string>();
    MatchCollection matchs
    = regex.Matches(input);
    foreach (Match match in matchs)
    {
    lst.Add(match.Groups[
    1].Value);
    }
    IEnumerable
    <string> ienumList = lst.Distinct(new ComparintString());//排重
    IEnumerable<string> list = ienumList.SkipWhile(p => ignoreList.Contains(p));//过滤白名单
    if (list.Count() > 0)
    {
    hasError
    = true;
    }
    return hasError;
    }

    接口实现:

    View Code
    /// <summary>
    /// 字符串比较接口实现
    /// </summary>
    public class ComparintString : IEqualityComparer<string>
    {
    public bool Equals(string x, string y)
    {
    if (x == null && y == null) return false;
    return x.Equals(y);
    }
    public int GetHashCode(string obj)
    {
    return obj.GetHashCode();
    }
    }
  • 相关阅读:
    升级salt导致进程kill问题记录
    记一次centos6升级salt-minion启动失败的问题
    3.ElasticSearch的倒排索引
    4.ElasticSearch的基本api操作
    1.ElasticSearch介绍及基本概念
    10.openldap备份与恢复
    1.Python3.6环境部署
    8.openldap mirrormode(主主同步)
    7.openldap使用ssl加密认证
    Python json解析
  • 原文地址:https://www.cnblogs.com/lucienbao/p/Distinct_IEqualityComparer.html
Copyright © 2011-2022 走看看