gpt4 book ai didi

linq - 根据另一个列表从列表条件中删除某些元素

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

我在这里遇到 linq 的基本问题。虽然这可以通过重复循环来解决。我想知道如何在 linq 中完成此操作。

我有两个列表。

List<string> a  = new List<string>{"a","b","c","d","e","f"};
List<string> b = new List<string> { "a", "b", "c", "x", "y", "z" };

我想比较列表 a 和 b 中的哪个元素在 a 中找到。我想从 b 中删除该元素。换句话说,我想根据列表 a 的比较从 b 中删除 {"a","b","c"} 并且只想在列表 b 中包含 {"x","y","z"} 。是否有一条语句 linq 可以解决这个问题?

最佳答案

(我确定这是几天前另一篇文章的副本,但我找不到它...)

如果需要原地修改,可以使用List<T>.RemoveAll :

b.RemoveAll(x => a.Contains(x));

或更有效(如果列表很大):

HashSet<string> set = new HashSet<string>(a);
b.RemoveAll(set.Contains);

请注意,就地修改集合在 LINQ 中不是惯用的,这就是为什么上面使用 .NET 2 列表特定方法的原因。

或者如果你乐意改变b改为引用新列表,然后您可以使用 LINQ:

b = b.Except(a).ToList();

关于linq - 根据另一个列表从列表条件中删除某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11823245/

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