gpt4 book ai didi

.net - 试图从两个 List 对象中获取不同的值

转载 作者:行者123 更新时间:2023-12-04 05:15:19 25 4
gpt4 key购买 nike

我有 2 个 List 对象:

List<int> lst1 = new List<int>();
List<int> lst2 = new List<int>();

假设他们有值(value)观:
lst1.Add(1);
lst1.Add(2);
lst1.Add(3);
lst1.Add(4);

lst2.Add(1);
lst2.Add(4);

我需要得到一个包含这两个“不同”列表的对象;所以在这种情况下,返回将是 List {2, 3}。

是否有捷径可寻?或者我是否需要遍历列表的每个值并进行比较?

我愿意使用 ObjectQuery、LINQ 等,因为这些列表来自数据库,并且可能有几百到几千个条目。

谢谢!

最佳答案

艾哈迈德几乎是对的 Except ,我相信 - 但这不会为您提供 lst2 中的元素但不在 lst1 .所以在你给出的例子中,如果你将 5 添加到 lst2 ,我想你会希望结果是 {2, 3, 5}。在这种情况下,您需要对称差异。我不认为有任何方法可以在 LINQ to Objects 中通过一次调用直接做到这一点,但您仍然可以实现它。这是一个简单但效率低下的方法:

lst1.Union(lst2).Except(lst1.Intersect(lst2)).ToList();

(显然,如果您真的需要 ToList() 而不是 List<T> ,您只需要 IEnumerable<T> 。)

阅读此内容的方式是“我想要在任一列表中但不在两个列表中的项目。”

使用 Concat 可能会更有效- 仍然可以用作 Except是一个基于集合的运算符,它只会返回不同的结果:
lst1.Concat(lst2).Except(lst1.Intersect(lst2)).ToList();

关于.net - 试图从两个 List<int> 对象中获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com