为什么除了应用Distinct的函数

本文关键字:函数 Distinct 应用 为什么 | 更新日期: 2023-09-27 18:02:17

可能重复:
除了和Distinct有相似的效果吗?

我有两个类似的List<String>

lstOne = { "A", "B", "C" ,"C" ,"C" };
lstTwo = { "A" };
lstResult = lstOne.Except(lstTwo).ToList();

现在预期的输出是

lstReult = { "B","C","C","C" };

但实际结果就像

lstResult = { "B","C" };

为什么会这样?我用过Except,为什么也用Distinct

为什么除了应用Distinct的函数

"Except"被记录为返回两个序列的集差

集合差定义为集合。根据定义,集合没有重复项。

预期输出是。。。

否,预期的输出与实际的

如果你期望有所不同,我的建议是调整你的期望,以符合记录在案的行为。

它被记录为返回"一个包含两个序列的元素的集合差的序列。"。集合没有重复项。

这也许是一个微妙的点,但它的功能符合规范

如果你想要重复:

var lstOne = new[] { "A", "B", "C" ,"C" ,"C" };
var except = new HashSet<string> { "A" };
var lstResult = lstOne.Where(x => !except.Contains(x)).ToList();
   // ^^ "B", "C", "C", "C"

MSDN定义:"通过使用默认的相等比较器比较值来产生两个序列的集差。"-->集差-->每个键都是唯一的。