新的 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,其中包含一条类似于以下内容的消息:序列包含多个元素

引入的版本

.NET 6

更改原因

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

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

受影响的 API

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