【问题标题】:LINQ Except is not retrieving the duplicates [duplicate]LINQ 除了不检索重复项 [重复]
【发布时间】:2020-01-31 12:26:23
【问题描述】:

我在 c# 中有两个列表,我想检索 listaA 上所有不在 listaB 中的元素,所以我决定使用 except 方法,如下面的代码:

List<string> listaA = new List<string>() { "a", "b", "b", "c", "d", "e", "e" };
List<string> listaB = new List<string>() { "e" };

var inter = listaA.Intersect(listaB);
var excep = listaA.Except(listaB).Count();

输出除外 -> 4

但是我的预期输出应该是 5,因为我们有两个“b”,所以如果在 ListaA 中我们排除了 listaA 中存在的所有元素,为什么输出是 4 而不是 5,我怎样才能让它工作如我所料?

【问题讨论】:

  • 来自msdn 只返回唯一元素。
  • var excep = listaA.Count(l =&gt; !listaB.Contains(l)); 这个简单的解决方法会返回预期的结果。链接的线程有这个答案
  • @Pugnatore,我在这里添加了一个答案stackoverflow.com/a/60004491/361177,可能会解决您的具体问题
  • 谢谢大家! :)

标签: c# linq


【解决方案1】:

你可以做Where然后得到输出的Count:

var result = listaA.Where(x =>!listaB.Contains(x));
var newcount=result.Count();

【讨论】:

  • 和我上面的评论有什么不同?以及现有线程中的答案?
  • 不是。我正在写答案,并没有看到 cmets 先生。
  • 这个解决方案在时间上不是最优的 (O(n²)),可以通过时空权衡来改进stackoverflow.com/a/60004491/361177
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多