Except方法的问题

手抓宝 2017-05-26 04:09:39
例如:

var list1 = new string[] {"1", "2", "3", "1"};
var list2 = new string[] {"2"};
var list3 = list1.Except(list2);
foreach (var item in list3)
Console.WriteLine(item);

//output:
//1
//3

where is my second "1"?

这个方法自动过滤重复数据吗?如果我一定要有重复数据,怎么处理?
...全文
205 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2017-05-31
  • 打赏
  • 举报
回复
var list1 = new string[] { "1", "2", "3", "1" }; var list2 = new string[] { "2" }; var list4 = list1.Where(obj => !list2.Contains(obj));
全栈极简 2017-05-27
  • 打赏
  • 举报
回复
Except方法的底层实现是用的hashset,所以返回结果不会有重复的元素。 https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,cebd1476aa53fa04
手抓宝 2017-05-26
  • 打赏
  • 举报
回复
引用 1 楼 u012881998 的回复:
expect的意思是求两个集合的差集,得到新的集合。差集的概念请百度。 “我一定要有重复数据”?怎么理解? 你是要从list1里移除掉list2中包含的元素?是这样吗? 如果是这样,那么你要确定:你要得到一个新的集合呢,还是直接修改list1集合?
list2是list1的子集,现在想取list1-list2,也就是我想得到1、3、1这个集合。但是现在取差集的时候重复的第二个1没有了。 可以理解为从list1里移除掉list2中包含的元素,并且得到一个新的集合
西漠以西 2017-05-26
  • 打赏
  • 举报
回复
expect的意思是求两个集合的差集,得到新的集合。差集的概念请百度。 “我一定要有重复数据”?怎么理解? 你是要从list1里移除掉list2中包含的元素?是这样吗? 如果是这样,那么你要确定:你要得到一个新的集合呢,还是直接修改list1集合?

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧