自定义iccomparer错误-类型参数不能从用法中推断出来

本文关键字:用法 推断出 不能 iccomparer 错误 类型参数 自定义 | 更新日期: 2023-09-27 18:10:19

我正在尝试使用IComparer与泛型类型。

下面的代码产生以下错误:"类型参数不能从用法中推断出来。尝试显式指定类型参数。"

如果我从OrderBy调用中删除自定义比较器,那么代码将编译并排序良好,但是我需要能够传入我的icomparer。同样值得注意的是,如果我使用对象/字符串等类型,下面的代码可以工作,但当我尝试使用泛型类型

时失败。
public IQueryable<T> OrderResults<T, TU>(IQueryable<T> queryData, IComparer<TU> customComparer, string sortColumnName)
{
    var sortPropertyInfo = queryData.First().GetType().GetProperty(sortColumnName);
    return queryData.OrderBy(x => sortPropertyInfo.GetValue(x, null), customComparer);
}

自定义iccomparer错误-类型参数不能从用法中推断出来

由于GetValue(x,null)返回类型System.Object,您的代码片段有一些歧义。试试以下命令:

public IQueryable<T> OrderResults<T, TU>(IQueryable<T> queryData, IComparer<TU> customComparer, string sortColumnName)
{
    var sortPropertyInfo = queryData.First().GetType().GetProperty(sortColumnName);
    return queryData.OrderBy(x => (TU)sortPropertyInfo.GetValue(x, null), customComparer);
}

至少没有编译时错误。如果您有一些用于测试的代码,我可以验证它是否有效....