新的 System.Linq.Queryable 方法重载

已将其他公共方法重载添加到 System.Linq.Queryable,作为在 https://github.com/dotnet/runtime/pull/47231 中实现的新功能的一部分。 如果在查找方法时反射代码不够可靠,则这些添加可能会中断查询提供程序实现。

更改描述

在 .NET 6 中,新重载已添加到 “受影响的 API ”部分中列出的方法。 反射代码(如以下示例所示)可能会因这些添加而中断:

typeof(System.Linq.Queryable)
    .GetMethods(BindingFlags.Public | BindingFlags.Static)
    .Where(m => m.Name == "ElementAt")
    .Single();

现在,此反射代码将引发一条 InvalidOperationException 类似于: Sequence 包含多个元素的消息。

已引入的版本

.NET 6

更改原因

添加了新的重载以扩展 LINQ Queryable API。

如果你是查询提供程序库作者,请确保反射代码具有方法重载添加功能。 例如,使用显式接受该方法的参数类型的 Type.GetMethod 重载。

受影响的 API

为以下 Queryable 扩展方法添加了新的重载: