c# - 自定义 icomparer 错误 - 无法从用法中推断出类型参数

标签 c# .net linq generics icomparer

我正在尝试将 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);
}

最佳答案

由于 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);
}

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

关于c# - 自定义 icomparer 错误 - 无法从用法中推断出类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32273356/

相关文章:

C# 创建自定义 NumberFormatInfo 以在货币值为 $0.00 时显示 "Free"

c# - 我应该如何管理类依赖/重构?

c# - 带有 XML 问题的 LINQ

sql - 在将 SQL 查询转换为 LINQ 方面需要帮助

c# - 为单元测试创​​建 HttpPostedFileBase 实例

c# - 打开带有 .cs 扩展文件的项目?

.net - MS Graph UserPrincipalName 与 OID 一起返回

c# - .Select 不更新 View 模型对象的 ObservableCollection

c# - 检测并替换值 Onkeydown

c# - 使用数据绑定(bind)获取各种类型项目列表的输入