Loading... ## C# Linq 交集、并集、差集、去重 > 今晚打老虎:如果你刻意练习某件事情请超过10000小时,那么你就会达到世界级别 其实只要明白 LINQ查询操作符的Distinct、Union、Concat、Intersect、Except、Skip、Take、SkipWhile、TakeWhile、Single、SingleOrDefault、Reverse、SelectMany,Aggregate()的使用,一些简单的操作就可以了。 合并两个数组,并去掉重复元素,然后排序(C#) ```csharp List<int> numbers1 = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 12, 10 }; List<int> numbers2 = new List<int>() { 15, 14, 11, 13, 19, 18, 16, 17, 12, 10 }; var newQuerty = numbers1.Concat( from n in numbers2 where !numbers1.Contains(n) select n ).OrderBy(n => n); string count = ""; foreach (int i in newQuerty) { count += i + ","; } MessageBox.Show(count); ``` 在这简单的介绍几个关键字,Distinct、Union、Concat、Intersect、Except、Skip、Take ##### `Distinct` - 过滤集合中的相同项; ```csharp List<int> list= new List<int>() {1,2,3,4,4,5,6,6 }; var newlist=list.Distinct(); ``` 得到的结果就是;1,2,3,4,5,6 ##### `Union` - 连接不同集合,自动过滤相同项 ```csharp List<int> list= new List<int>() {1,2,3,4,4,5,6,6 }; List<int> list1= new List<int>() {5,6,6,7,8,9}; var newlist=list.Union (list1); ``` 得到的结果就是;1,2,3,4,5,6,7,8,9 ##### `Concat `- 连接不同集合,不会自动过滤相同项 ```csharp List<int> list= new List<int>() {1,2,3,4,4,5,6,6 }; List<int> list1= new List<int>() {5,6,6,7,8,9}; var newlist=list.Union (list1); ``` 得到的结果就是;1,2,3,4,4,5,6,6,5,6,6,7,8,9 ##### `Intersect` - 获取不同集合的相同项(交集) ```csharp List<int> list= new List<int>() {1,2,3,4,4,5,6,6 }; List<int> list1= new List<int>() {5,6,6,7,8,9}; var newlist=list.Intersect (list1); ``` 得到的结果就是;5,6 ##### `Except` - 从某集合中删除其与另一个集合中相同的项;其实这个说简单点就是某集合中独有的元素 ```csharp List<int> list= new List<int>() {1,2,3,4,4,5,6,6 }; List<int> list1= new List<int>() {5,6,6,7,8,9}; var newlist=list.Except (list1); ``` 得到的结果就是;1,2,3,4 ##### `Skip` - 跳过集合的前n个元素 ```csharp List<int> list= new List<int>() {1,2,3,4,4,5,6,6 }; var newlist=list.Skip (3); ``` 得到的结果就是;4,4,5,6,6 ##### `Take` - 获取集合的前n个元素 ```csharp List<int> list= new List<int>() {1,2,2,3,4,4,5,6,6 }; var newlist=list.Take (3); ``` ##### 分页 Skip()和Take()方法都是IEnumerable 接口的扩展方法,包括C#中的所有Collections类,如ArrayList,Queue,Stack等等,还有数组和字符串都可以调用这两个方法。 var testList = new List(); //比如 testList里面是 1,2,3,4,5,6,7,8,9,10 var result = testList.Skip(5); //返回值就是 6,7,8,9,10; var result = testList.Take(5); //返回值就是 1,2,3,4,5 //搭配使用,一般用来分页 var result = list.Skip(2).Take(2); //返回值 3,4 ##### 更多 > https://blog.csdn.net/qq_40732336/article/details/111684724 > 官网:[https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.queryable.union?view=net-6.0](https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.queryable.union?view=net-6.0#code-try-1) > 参考:[https://www.cnblogs.com/lgx5/p/10614033.html](https://www.cnblogs.com/lgx5/p/10614033.html) 最后修改:2023 年 08 月 10 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏