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

使用 MassTransit、.NET Core 和 RabbitMQ 的设计挑战

当 Func 委托需要接口作为参数时,它是如何工作的?

使属性只能通过绑定的 Editor(component) 编辑

Moq - 不可覆盖的成员不能用于设置/验证表达式

我应该将 ILogger、ILogger、ILoggerFactory 或 ILoggerProvider 作为库吗?

C#6.0 字符串插值本地化

(C# 7.2)“私人保护”修饰符的用例是什么?

.NET Core 和 .NET 标准类库项目类型有什么区别?

软件包版本始终为 1.0.0,带有 dotnet pack

找不到库 hostpolicy.dll

.NET 4.5 中的默认安全协议

返回 IList 是否比返回 T[] 或 List 更糟糕?

判断 HttpStatusCode 是代表成功还是失败

Visual Studio 2015 项目不再在调试模式下运行

Roslyn 编译代码失败

如何在插值字符串中使用三元运算符?

为什么 !0 是 Microsoft 中间语言 (MSIL) 中的一种类型?

为什么使用 ImmutableList 而不是 ReadOnlyCollection?

Windows 更新导致 MVC3 和 MVC4 停止工作

如何在 RabbitMQ 中设置重试次数?