假设我有如下LINQ查询:

var authors = from x in authorsList
              where x.firstname == "Bob"
              select x;

假设authorsListList<Author>类型,我如何从authorsList中删除查询返回到authors中的Author个元素呢?

或者,换句话说,我怎样才能从authorsList个名字中删除所有与Bob相等的名字?

注:就问题而言,这是一个简化的示例.

推荐答案

首先,排除他们会更容易:

authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();

然而,这只会更改authorsList的值,而不是从以前的集合中删除作者.或者,您可以使用RemoveAll:

authorsList.RemoveAll(x => x.FirstName == "Bob");

如果您真的需要基于另一个集合执行此操作,我将使用HashSet、RemoveAll和Contains:

var setToRemove = new HashSet<Author>(authors);
authorsList.RemoveAll(x => setToRemove.Contains(x));

.net相关问答推荐

如何在PowerShell中隐藏任务延迟输出?

获取Ef-Core集合的DeleteBehavior

如何手动注入依赖注入

如何找到windows服务exe路径

Owin Twitter登录-根据验证程序远程证书无效

我可以从我的应用程序中抛出哪些内置 .NET 异常?

如何以编程方式判断类型是 struct 还是类?

控制台应用程序的退出时

C# 编译为 32/64 位,或任何 cpu?

检索字典值最佳实践

ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 的区别

如何确定字符串是 C# 中的有效 IPv4 还是 IPv6 地址?

如何防止任务的同步延续?

通过反射查找可空属性的类型

如何判断对象是否已在 C# 中释放

是 C# 中的 bool 读/写原子

.NET 中的 java.lang.IllegalStateException?

从 bcp 客户端接收到 colid 6 的无效列长度

连接字符串而不是使用一堆 TextBlocks

泛型类的静态成员是否与特定实例相关联?