gpt4 book ai didi

c# - linq 查询表单

转载 作者:行者123 更新时间:2023-11-30 19:19:29 25 4
gpt4 key购买 nike

如何将以下代码转换为 linq 或 predicate 表达式:

List<int> list1 = new List<int> {1,2,3,4,5};
List<int> list2= new List<int> {2,3,4,5,6,7};
foreach (int int1 in list1)
list2.Remove(int1);

最佳答案

您可以使用 Except() :

list2 = list2.Except(list1)
.ToList();

这也会比您的原始代码执行得更好,因为您的代码是 O(n2) 对第一个集合中的所有项目进行循环,然后尝试在第二个集合中找到第一个匹配项收藏。 (虽然诚然,如果您的集合这么小,性能差异不会有太大影响,但对于大型集合来说,性能差异会很重要)。

Except()将创建一个 HashSet<int>list1在内部然后遍历 list2收藏。只有未包含在 HashSet 中的项目最终出现在结果枚举中——因为 HashSet查找平均为 O(1),这将导致 O(n) 的工作量。

如需教育复习,请参阅 Jon Skeets EduLinq 系列,此处为 chapter for Except .

关于c# - linq 查询表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9182123/

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