介绍一下C#中Linq的Intersect与Except方法使用实例的攻略。
Linq Intersect与Except方法简介
在C#的Linq中,Intersect与Except方法都是集合间的操作,用于比较两个集合的内容并获取它们间的交集或差集。
- Intersect方法:返回两个集合中都存在的元素
- Except方法:返回存在于第一个集合中,但不存在于第二个集合中的元素
Linq Intersect与Except方法使用时需要注意,集合必须是继承IEnumerable接口的集合,同时集合元素必须重写Equals方法,或者使用IEqualityComparer实现自定义的集合元素比较方法。
Linq Intersect方法使用实例
假设我们有两个整形数组int[] a
和int[] b
作为数据源,需要比较它们的交集,可以使用Intersect方法进行操作。
int[] a = {1, 2, 3, 4, 5};
int[] b = {4, 5, 6, 7, 8};
var c = a.Intersect(b);
foreach (var item in c)
{
Console.WriteLine(item);
}
以上代码会输出:
4
5
即集合a和b之间的交集为4和5。
如果需要自定义元素的比较方法,可以实现IEqualityComparer接口的Equal方法,将实现后的IEqualityComparer对象作为Intersect方法的参数之一传入。
class MyComparer : IEqualityComparer<int>
{
public bool Equals(int x, int y)
{
return (x % 2) == (y % 2);
}
public int GetHashCode(int obj)
{
return obj.GetHashCode();
}
}
int[] a = {1, 2, 3, 4, 5};
int[] b = {4, 5, 6, 7, 8};
var c = a.Intersect(b, new MyComparer());
foreach (var item in c)
{
Console.WriteLine(item);
}
以上代码比较的是两个集合中取模2后余数相等的元素,输出为:
4
5
Linq Except方法使用实例
假设我们有两个整形数组int[] a
和int[] b
作为数据源,需要比较它们的差集,可以使用Except方法进行操作。
int[] a = {1, 2, 3, 4, 5};
int[] b = {4, 5, 6, 7, 8};
var c = a.Except(b);
foreach (var item in c)
{
Console.WriteLine(item);
}
以上代码会输出:
1
2
3
即集合a中存在,但集合b中不存在的元素为1、2、3。
同样的,如果需要自定义元素的比较方法,可以实现IEqualityComparer接口的Equal方法,将实现后的IEqualityComparer对象作为Except方法的参数之一传入。
class MyComparer : IEqualityComparer<int>
{
public bool Equals(int x, int y)
{
return (x % 2) == (y % 2);
}
public int GetHashCode(int obj)
{
return obj.GetHashCode();
}
}
int[] a = {1, 2, 3, 4, 5};
int[] b = {4, 5, 6, 7, 8};
var c = a.Except(b, new MyComparer());
foreach (var item in c)
{
Console.WriteLine(item);
}
以上代码比较的是两个集合中取模2后余数相等的元素,输出为:
1
3
以上就是Linq Intersect与Except方法的使用实例以及相关攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的Linq Intersect与Except方法使用实例 - Python技术站