假设我有如下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相关问答推荐

如何在dotnet中使用OpenTelemetry Prometheus导出器导出多个版本的度量?

Puppeteer LaunchAsync 在未打开浏览器的情况下挂起

等待时 Blazor 服务器按钮刷新

.NET 4.5 项目未在 Visual Studio 2022 中编译

在 C# 中输入按键

C# 时间跨度毫秒与 TotalMilliseconds

每第 N 个字符/数字拆分一个字符串/数字?

如何在 WPF 应用程序中使用 App.config 文件?

Select 文件夹对话框 WPF

如何从字符串中删除所有字母字符?

为什么 .NET 中不需要 Maven?

创建多个线程并等待所有线程完成

在 C# 中使用委托

String.Format - 它是如何工作的以及如何实现自定义格式字符串

为什么 C# 不推断我的泛型类型?

静态方法继承的正确替代方法是什么?

用 double 替换 int 时的 Visual Studio 长编译

使 HashSet 不区分大小写

通过继承扩展枚举

如何修改 KeyValuePair 值?