實例描述
現有某班學生的兩份成績,兩份成績中存在一些不一致的記錄。需借助于編程方法找出這些不一致的記錄。
實例代碼
using System;using System.Collections.Generic;using System.Linq;namespace IntersectAndExceptExp{  class Program  {    static void Main(string[] args)    {      List<Student> studentList1 = newList<Student>() {        new Student(){StudentId=1,Score=64},        new Student(){StudentId=2,Score=85},        new Student(){StudentId=3,Score=78},        new Student(){StudentId=4,Score=94},        new Student(){StudentId=5,Score=90}      };      List<Student> studentList2 = newList<Student>() {        new Student(){StudentId=1,Score=64},        new Student(){StudentId=2,Score=80},        new Student(){StudentId=3,Score=78},        new Student(){StudentId=4,Score=94},        new Student(){StudentId=5,Score=95}      };      var both = studentList1.Intersect(studentList2,new StudentComparer());      var diff1 =studentList1.Except(both, new StudentComparer());      var diff2 =studentList2.Except(both, new StudentComparer());      Console.WriteLine("-------------下面是兩份成績中不同的記錄--------------");      Console.WriteLine("-------------第一份學生成績--------------");      foreach (var s in diff1)      {        Console.WriteLine("StudentId:"+s.StudentId+";Score:"+s.Score);      }      Console.WriteLine("-------------第一份學生成績--------------");      foreach (var s in diff2)      {        Console.WriteLine("StudentId:"+ s.StudentId + ";Score:" + s.Score);      }    }  }  public class Student  {    public int StudentId { get; set; }    public int Score { get; set; }  }  public class StudentComparer : IEqualityComparer<Student>  {    public bool Equals(Student x, Studenty)    {      if (Object.ReferenceEquals(x, y)) returntrue;      return x != null && y != null&& x.StudentId == y.StudentId && x.Score == y.Score;    }    public int GetHashCode(Student obj)    {      int hashStudentId =obj.StudentId.GetHashCode();      int hashScore =obj.Score.GetHashCode();      return hashStudentId ^ hashScore;    }  }}代碼說明
先使用Intersect方法生成兩份記錄的交集,該方法會使用傳入的比較器對值進行比較決定記錄是否相同?;谇安缴傻慕患?,再使用Except方法找出兩份記錄中不一致的記錄,該方法同樣使用傳入的比較器對值進行比較決定記錄是否相同。
執行結果

新聞熱點
疑難解答