ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Contains函数应用 IEqualityComparer 示例

2020-03-01 10:09:01  阅读:249  来源: 互联网

标签:IEqualityComparer 示例 Contains System 学生 Student new public


Contains函数应用 IEqualityComparer 示例

项目中涉及到了比较器的应用,截图如下:
在这里插入图片描述
现将 Contains函数应用 IEqualityComparer 做一个完整的示例如下:

bool b = stuList.Contains(stu, new IDComparater());

一、引用函数

#region 程序集 System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
#endregion

// 参数:
source:  要在其中定位某个值的序列。
value: 要在序列中定位的值。
comparer: 一个对值进行比较的相等比较器。
TSource: source元素的类型
返回结果: true 如果源序列包含具有指定的值; 的元素否则为 false。
        
public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer);

二、示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> stuList = new List<Student> {
                new Student(1002,"学生1",20),
                new Student(1003,"学生2",30),
                new Student(1001,"张三",20),
                new Student(1004,"学生3",30),
                new Student(1001,"张三",20),
                new Student(1005,"学生4",20),
                new Student(1006,"学生5",30),
                new Student(1007,"学生6",20),
                new Student(1008,"学生7",30),
                new Student(1009,"学生8",200),
            };

            //ID=1001的学生张三,后期进行了更名,如何判断这个改名后的学生是否包含在 学生名册中呢?
            var stu = new Student(1001, "张飞", 5);
            bool b = stuList.Contains(stu, new IDComparater());
            //b==true     
        }
    }

    class IDComparater : IEqualityComparer<Student>
    {
        public bool Equals(Student x, Student y)
        {
            return x.ID == y.ID;
        }

        public int GetHashCode(Student obj)
        {
            return 0;
        }
    }

    class Student
    {
        public Student(int iD, string name, int age)
        {
            ID = iD;
            Name = name;
            Age = age;
        }

        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }

    }
}

上述代码,只查找到第1个符合条件的即结束继承查找

XBMY 发布了132 篇原创文章 · 获赞 16 · 访问量 7万+ 私信 关注

标签:IEqualityComparer,示例,Contains,System,学生,Student,new,public
来源: https://blog.csdn.net/cxb2011/article/details/104586828

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有