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();
    }
    }
  • 相关阅读:
    USACO 3.1
    linux 逻辑卷管理 调整分区大小
    记录一下
    ADOX创建ACCESS数据库列名的数据类型
    使用jstack分析cpu消耗过高的问题
    fastadmin添加定时任务
    linux定时任务
    技术域
    IOS div上下滑动效果
    mysql根据时间统计数据语句
  • 原文地址:https://www.cnblogs.com/lucienbao/p/Distinct_IEqualityComparer.html
Copyright © 2011-2022 走看看