当前位置:首页 >.NET > 正文内容

List去重的实现

大滑稽6年前 (2018-11-02).NET1804
[__DynamicallyInvokable]        
public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource> comparer)
{   if (source == null)
	{
		throw Error.ArgumentNull("source");
	}            
	return DistinctIterator(source, comparer);
}

通过实现IEqualityComparer

比较器来实现对象的比较。IEqualityComparer的简单实现,通过委托来比较对象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Extensions
{
    public delegate bool ComparerDelegate<T>(T x, T y);

    /// <summary>
    /// list比较
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class ListCompare<T> : IEqualityComparer<T>
    {
        private ComparerDelegate<T> _comparer;

        public ListCompare(ComparerDelegate<T> @delegate)
        {
            this._comparer = @delegate;
        }

        public bool Equals(T x, T y)
        {
            if (ReferenceEquals(x, y))
            {
                return true;
            }
            if (_comparer != null)
            {
                return this._comparer(x, y);
            }
            else
            {
                return false;
            }
        }

        public int GetHashCode(T obj)
        {
            return obj.ToString().GetHashCode();
        }
    }
}
使用方法:
list= List.Distinct(new ListCompare<Path>((x, y) => x.Latitude == y.Latitude && x.Longitude == y.Longitude)).ToList();


扫描二维码推送至手机访问。

版权声明:本文由第★一★次发布,如需转载请注明出处。

本文链接:https://wpers.net/post/4.html

标签:C#.NET

“List去重的实现” 的相关文章

Cbo控件数据源绑定

 //Cbo控件数据源绑定DataTable DtType = noteType.GetTypeList("");         ...

C#遍历控件的方法

首先,要想遍历,就必须找到你想找的表单里面的所有控件,然后一个个的逐一比对,当找到了你需要的控件的时候,再做你需要的操作。1、foreach方法foreach (Control control in ...

Linq读写XML

         private List<News> GetNews(string html)    &n...

修改注册表限制软件使用次数

 private void Form1_Load(object sender, System.EventArgs e){RegistryKey RootKey,RegKey; //项名为:HKEY_CURRENT_USER\So...

c#中分页显示数据

     //c#中分页显示数据    public partial class Form1 : Form    {  ...

C#修改浏览器主页

string key = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main";      &n...