Linq是C#语言的一个强大的功能,可以使得数据的查询和操作变得更加方便和高效。Except()方法也是Linq功能中的一个非常重要的方法,用于提取序列中存在于另一个序列的元素之外的所有元素。下面详细介绍一下Except()方法的使用。
Except()方法的语法
Except()方法具有以下语法:
public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)
其中,除了方法名以外,还有两个参数:first和second。它们分别是类型为IEnumerable
该方法的返回值是一个IEnumerable
Except()方法的使用示例
下面是两个使用Except()方法的示例:
示例一:
int[] numbers1 = { 1, 2, 3, 4, 5 };
int[] numbers2 = { 3, 4, 5, 6, 7 };
var exceptNumbers = numbers1.Except(numbers2);
foreach (var num in exceptNumbers)
{
Console.WriteLine(num);
}
输出结果:
1
2
该示例中,首先定义了两个整数类型的数组numbers1和numbers2,分别包含1-5和3-7的数字。然后使用Except()方法从numbers1中提取了那些没有出现在numbers2中的数字。最后输出结果。
示例二:
class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
List<Student> students1 = new List<Student>
{
new Student{ Id=1, Name="Tom"},
new Student{ Id=2, Name="Jerry"},
new Student{ Id=3, Name="Lucy"},
new Student{ Id=4, Name="Jack"}
};
List<Student> students2 = new List<Student>
{
new Student{ Id=2, Name="Jerry"},
new Student{ Id=4, Name="Jack"},
new Student{ Id=6, Name="Mike"},
new Student{ Id=7, Name="Tony"}
};
var exceptStudents = students1.Except(students2, new StudentComparer());
foreach (var student in exceptStudents)
{
Console.WriteLine($"Student Id:{student.Id}, Name:{student.Name}");
}
public class StudentComparer : IEqualityComparer<Student>
{
public bool Equals(Student x, Student y)
{
if (x == null || y == null)
return false;
return x.Id == y.Id;
}
public int GetHashCode(Student obj)
{
if (obj == null)
return 0;
return obj.Id.GetHashCode();
}
}
输出结果:
Student Id:1, Name:Tom
Student Id:3, Name:Lucy
该示例中,首先定义了两个类型为Student的List集合students1和students2,分别包含四个学生对象。然后定义了一个实现了IEqualityComparer
以上两个示例可以帮助大家更好地理解使用Except()方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Linq的Except()方法 – 返回在一个序列中但不在另一个序列中的元素 - Python技术站