2015-08-28 75 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

這很好。非常感謝你。 –

相關問題