C# 两个结果的并集

C# 两个结果的并集,c#,linq,C#,Linq,我需要结合c和d的结果,应该是3和4 我可以在LINQ查询中合并这两个结果吗?使用 如果您只对Union感兴趣,则可以取消对ToList for c和d的调用,请参阅: 您将使用Enumerable的Union方法,如下所示: var c = first.Where(x => x.Value > 5).Select(x => x.Key); // this gives me 3 var d = second.Where(x => x.Value >= 2).Sel

我需要结合c和d的结果,应该是3和4

我可以在LINQ查询中合并这两个结果吗?

使用

如果您只对Union感兴趣,则可以取消对ToList for c和d的调用,请参阅:


您将使用Enumerable的Union方法,如下所示:

var c = first.Where(x => x.Value > 5).Select(x => x.Key);  // this gives me 3
var d = second.Where(x => x.Value >= 2).Select(x => x.Key); // this give me 3 and 4

var combined = c.Union(d).ToList();
可以找到Union上的MSDN

或者,如果以一次性查询的方式执行此操作:

var union = c.Union(d);

实际上,这可能更可取,因为Union采用了延迟执行。

您的意思是将最后三个条目添加到第二个条目吗?对不起,伙计们,已修复的输入错误我不太清楚您的意思,但这里是OP要求的,我认为需要将c和d的结果合并,应该是3和4。@Asad,不,这不起作用。Union将使用默认的相等比较器,在本例中,您将在列表中得到3,3,4项。@Habib Right。我在发表评论几分钟后意识到了这一点。在我发表评论之前需要考虑一下。
var c = first.Where(x => x.Value > 5).Select(x => x.Key);  // this gives me 3
var d = second.Where(x => x.Value >= 2).Select(x => x.Key); // this give me 3 and 4

var combined = c.Union(d).ToList();
var union = c.Union(d);
var union = first.Where(x => x.Value > 5)
                 .Select(x => x.Key)
                 .Union(second.Where(y => y.Value >= 2)
                              .Select(y => y.Key))
                 .ToList();