c# ,有两个list;结构为编码,位置1,位置2;当list1中的元素为编码:001,位置1:a1,b1,位置2:a1,b2;list2中的元素为编码:001,位置1:a1,b1,位置2:a1,b3;请问,如何判断这两个list的不同并取出不同处b3
3条回答 默认 最新
- ShowMeAI 2023-01-10 17:47关注
如果你想要比较两个 List 并取出不同之处,你可以使用 Linq 来实现。
- 首先使用 Except() 方法来比较两个 List,并取出不同之处。 然后使用 .Where() 方法来筛选位置2不同的元素。
var list1 = new List<(string Code, string Position1, string Position2)> { ("001", "a1", "a1,b1"), ("002", "a2", "a2,b2"), }; var list2 = new List<(string Code, string Position1, string Position2)> { ("001", "a1", "a1,b1"), ("002", "a2", "a2,b3"), }; var different = list1.Except(list2).Where(x => x.Position2 != "a1,b1").ToList(); foreach (var d in different) Console.WriteLine(d.Position2);
代码会输出 "a2,b3" 。
- 也可以使用 GroupJoin 来实现。 这样可以根据Code筛选出相同Code的元素进行比较。
var diff = list1.GroupJoin(list2, a => a.Code, b => b.Code, (a, b) => new { a, b }) .SelectMany(x => x.b.DefaultIfEmpty(), (x, y) => new { x.a, y }) .Where(x => !x.a.Equals(x.y)) .Select(x => x.a.Position2);
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 宝塔ssl证书一直待待验证
- ¥15 相近语义 不同表达 匹配
- ¥15 [vasp+phonopy]表面模型的间隙扩散系数中尝试频率如何用声子频率计算
- ¥15 现在新建了一个f1的就不行了包括所有新建的项目都无法生成,路径命名都没问题,keil和cubemx重装过还是不行,如何解决?(标签-java|关键词-固件)
- ¥15 web前端开发怎么实现像图片这样的页面啊?
- ¥15 ubuntu 20.04 网卡启用后,只有ipv6 没有 ipv4 无法上网
- ¥15 QT任务管理器无法正确获取展开,有悬赏15元速求,如何解决?(相关搜索:标识符|结构体)
- ¥15 使用delphi 10.3+intraweb 生成的页面怎么实现自动滚屏
- ¥20 思科:Router c3600 MN-4E插槽
- ¥15 16进制修改视频的元数据