c# - Linq 查询我的 List<Square> 以查看一个列表的项目是否在另一个列表中

标签 c# linq

我已经尝试了相关问题中的多行代码,但它们似乎对我不起作用。

我有两个 List<Square>小号:

List<Square> List1 = new List<Square> { sq1, sq2, sq3 };
List<Square> List2 = new List<Square> { sq1, sq5, sq7 };

我想从 List2 中删除所有方 block 在 List1 中已经。例如,我尝试了这段代码:

var test2NotInTest1 = List1.Where(l1 => !List2.Any(l2 => l1.Contains(List2)));

来自相关问题,但它根本不起作用。我还是个新手,所以我可能只是打错了。我希望你能帮助我!

最佳答案

这不适合你吗?

var test2NotInTest1 = List2.Except(List1);

如果 Square 是一个 class(不是 struct)并且列表元素指向相同的变量,这应该可以工作。否则你需要实现 IEquatable在您的 Square 类/结构上(或者至少提供正确的 GetHashCodeEquals 函数)。

关于c# - Linq 查询我的 List<Square> 以查看一个列表的项目是否在另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530820/

相关文章:

c# - 如何确定 .net 应用程序是否为 "core"应用程序?

c# - 通过LINQ从gridview获取列值

c# - LINQ 查询的返回类型是什么?

c# - 如何将项目添加到 Mock DbSet(使用 Moq)

C# LINQ OrderBy 来自另一个列表的值 (IEnumerable)

c# - .NET MSBuild 目标 AfterTargets=Pack using dotnet build

c# - 如何知道流已经结束C#

c# - 启动时将数据传递到新 ViewModel 的最佳方法

c# - 使用带结构图的命名 session 实例策略的 Setter 剖分

c# - 在 EF 中调用 SaveChanges() 后,将获取的旧记录保留在变量中