C# List集合Linq取交集、并集、差集、去重
发布网友
发布时间:2024-10-04 03:52
我来回答
共1个回答
热心网友
时间:2024-10-21 14:24
在C#中,List集合的处理可以通过LINQ方法来实现各种操作,如交集、并集、差集以及去重。首先,我们创建两个List对象,例如list1和list2:
List<List> list1 = new List<List>();
List<List> list2 = new List<List>();
1. 要获取两个List的交集,可以使用Intersect方法:
List<List> list3 = list1.Intersect(list2).ToList();
这会返回两个列表中共享的元素集合。
2. 获取并集,使用Union方法:
List<List> list4 = list1.Union(list2).ToList();
并集包含所有不重复的元素,即两个列表中的所有独特元素。
3. 要计算差集,即list1中独有的元素,使用Except方法:
List<List> list5 = list1.Except(list2).ToList();
这将返回在list1中但不在list2中的元素列表。
接下来,我们有一个包含重复项的User对象列表users:
List users = new List();
users.Add(new User("张三", "永丰路299号", DateTime.Parse("2018-05-03")));
users.Add(new User("张三", "上地西路8号", DateTime.Parse("2018-05-04")));
...其他重复项...
users.Add(new User("李四", "海鹰路甲一号", DateTime.Parse("2018-05-06")));
去重操作有两种方式:lambda表达式和Distinct方法。使用lambda表达式,可以找到所有不重复的User对象,基于Name属性:
List list6 = users.Where((x, i) => users.FindIndex(n => n.Name == x.Name) == i).ToList();
而Distinct方法则适用于值类型,如简单对象,它会根据对象的默认哈希和相等性规则去重:
List list7 = users.Distinct().ToList();
这样,list7将只包含所有唯一的User对象。
热心网友
时间:2024-10-21 14:31
在C#中,List集合的处理可以通过LINQ方法来实现各种操作,如交集、并集、差集以及去重。首先,我们创建两个List对象,例如list1和list2:
List<List> list1 = new List<List>();
List<List> list2 = new List<List>();
1. 要获取两个List的交集,可以使用Intersect方法:
List<List> list3 = list1.Intersect(list2).ToList();
这会返回两个列表中共享的元素集合。
2. 获取并集,使用Union方法:
List<List> list4 = list1.Union(list2).ToList();
并集包含所有不重复的元素,即两个列表中的所有独特元素。
3. 要计算差集,即list1中独有的元素,使用Except方法:
List<List> list5 = list1.Except(list2).ToList();
这将返回在list1中但不在list2中的元素列表。
接下来,我们有一个包含重复项的User对象列表users:
List users = new List();
users.Add(new User("张三", "永丰路299号", DateTime.Parse("2018-05-03")));
users.Add(new User("张三", "上地西路8号", DateTime.Parse("2018-05-04")));
...其他重复项...
users.Add(new User("李四", "海鹰路甲一号", DateTime.Parse("2018-05-06")));
去重操作有两种方式:lambda表达式和Distinct方法。使用lambda表达式,可以找到所有不重复的User对象,基于Name属性:
List list6 = users.Where((x, i) => users.FindIndex(n => n.Name == x.Name) == i).ToList();
而Distinct方法则适用于值类型,如简单对象,它会根据对象的默认哈希和相等性规则去重:
List list7 = users.Distinct().ToList();
这样,list7将只包含所有唯一的User对象。