日期:2014-05-17  浏览次数:21375 次

c# distinct自定义重写方法

现在有一个类定义如下

public class CreateTestUnitSrvInputCollection 

{

        private int mParentId;
        /// <summary>
        /// 所属构建标签ID/或文件夹ID
        /// </summary>
        public int ParentId
        {
            get
            {
                return mParentId;
            }
            set
            {
                mParentId = value;
            }
        }


        private int mParentType;
        /// <summary>
        /// 所属父类的文件类型   2文件夹 1构建标签
        /// </summary>
        public int ParentType
        {
            get
            {
                return mParentType;
            }
            set
            {
                mParentType = value;
            }
        }

  }

现在有一个List<CreateTestUnitSrvInputCollection > 其中里面有一些数据是相同的(即其中ParentId和ParentType的值都相同)

那么这个时候你如果调用distinct的方法话 是去除不掉这些相同项的 因为在c#中实例化一个类后给他的是一个 区分它们的是一个什么东西我也想不起来了

所以这个时候 如果你想自定义去除相同项的话 那就要继续IEqualityComparer接口

实现代码如下

public class CreateTestUnitSrvInputCollection : System.Collections.Generic.IEqualityComparer<CreateTestUnitSrvInputCollection>

  {

        private int mParentId;
        /// <summary>
        /// 所属构建标签ID/或文件夹ID
        /// </summary>
        public int ParentId
        {
            get
            {
                return mParentId;
            }