Tag: 十字路口

LINQ Set操作无法正常工作(相交,除外)

我想使用Uber-Coolness of LINQ set操作来表达以下内容: foreach (Group group in groups) { if (user.Groups.Contains(group)) { assignedGroups.Add(group); } else { availableGroups.Add(group); } } 我认为它应该是一个双线实现这个: var assigned = user.Groups.Intersect(groups); var available = groups.Except(user.Groups); 每当我运行此示例时,foreach方法正确填充我的列表,而set操作导致空的分配列表和填充的可用列表。 我认为它必须是关于等式检查的问题,但是Contains()工作的事实certificate这是错误的。 任何人都可以帮我看看我的误解吗? IEnumerable 组也是LINQ查询的结果,以防信息有所帮助……

查找所有相交数据,而不仅仅是唯一值

我以为我理解了Intersect ,但事实certificate我错了。 List list1 = new List() { 1, 2, 3, 2, 3}; List list2 = new List() { 2, 3, 4, 3, 4}; list1.Intersect(list2) => 2,3 //But what I want is: // => 2,3,2,3,2,3,3 我可以想象一下: var intersected = list1.Intersect(list2); var list3 = new List(); list3.AddRange(list1.Where(I => intersected.Contains(I))); list3.AddRange(list2.Where(I => intersected.Contains(I))); 在LINQ中有更简单的方法来实现这一目标吗? 我需要说明我不关心结果的顺序。 2,2,2,3,3,3,3也可以。 问题是我在一个非常大的集合上使用它,所以我需要效率。 […]