gpt4 book ai didi

c# - 根据特定条件从 C# 中的列表中删除列表

转载 作者:行者123 更新时间:2023-11-30 21:58:57 31 4
gpt4 key购买 nike

我想根据条件删除一个列表中存在于另一个列表中的对象这是我的两个列表

列表结构

list1 = {GuideId ,Text , Desc , SecId , NextBtnText , ParentId}

list2 = {userId , ParentId , GuideId , Status }

列表一的数据

list1[0]{GuideId = 1 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

list1[1]{GuideId = 2 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

list1[2]{GuideId = 3 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

list1[3]{GuideId = 4 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

list1[4]{GuideId = 5 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

列表 2 的数据

list2[0]{GuideId = 1 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

list2[1]{GuideId = 2 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

list2[2]{GuideId = 3 , Text=abc , Desc=any , SecId =2 , ParentId = 2}

这些数据来自db 可能有几千个

但我需要 GuideId 匹配的地方,它会从列表中删除数据

我申请的没用

这是代码

List1 = List1.Except(List2).ToList();

这是我的代码

  userGuideList = query.ToList<GuidedPopupsViewModel>();
popUpGuideListVm = query2.ToList<GuidedPopupsViewModel>();
popUpGuideListVm = popUpGuideListVm.Except(userGuideList).ToList();

最佳答案

那是行不通的,因为 Except不知道你想如何比较对象。所以它只是比较引用。你必须覆盖 Equals + GetHashCode或者您必须提供自定义 IEqualityComparer<T> .

但你也可以使用 List.RemoveAll 相反:

List1.RemoveAll(x=> List2.Any(x2 => x2.GuideId == x.GuideId));

关于c# - 根据特定条件从 C# 中的列表中删除列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702597/

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