2015-08-28 52 views
2

我想与泛型类型一起使用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); 
} 

回答

1

您的片段具有因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); 
} 

这至少没有编译时错误。如果你有一些代码用于测试,我可以验证它的工作原理....

+0

这很好。非常感谢你。 –

相关问题