为什么 System.Linq.Dynamic.Core OrderBy 不能与 ImmutableArray 一起使用?

Why is System.Linq.Dynamic.Core OrderBy not working with ImmutableArray?

我正在尝试将 System.Linq.Dynamic.Core 与 ImmutableArray 一起用于动态 OrderBy,但出现以下异常:

Expression of type 'System.Collections.Immutable.ImmutableArray`1[$customType]' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable`1[$customType]' of method 'System.Linq.IOrderedEnumerable`1[$customType] OrderByDescending[$customType,Int32](System.Collections.Generic.IEnumerable`1[$customType], System.Func`2[$customType,System.Int32])' (Parameter 'arg0')

这是为什么?他们是否为不可变类型定义了特定的验证? Normal OrderBy 完全有能力对其进行排序。这应该作为功能请求提交给他们,还是我遗漏了一些明显的东西?一旦它被投射到一个列表中,它就像一个魅力。

这似乎是 .Net (Core) 中的错误,特别是在 Expression.Call 的参数验证中。

最终,第一个参数通过调用 TypeUtils.AreReferenceAssignable 进行验证,并且代码假定值类型不能(引用)分配给 non-value 类型,并且 ImmutableArray 是一个值类型,因为它是用 struct.

实现的

我在 github 上打开了 an issue,看看别人怎么看。