我試圖利用詹姆斯麥考馬克的指南來使用動態Linq自定義IComparer。 - 看到http://zootfroot.blogspot.co.uk/2009/10/dynamic-linq-orderby.html?showComment=1347276236930#c11348033278810583動態Linq&ICompare
我使用查詢拉字符串值回可枚舉:
.Select("fieldname").Distinct()
然後嘗試使用
.OrderBy(item=>item.GetReflectedPropertyValue("fieldname"),new myComparer())
GetReflectedPropertyValue是詹姆斯定義一個輔助方法
public static string GetReflectedPropertyValue(this object subject, string field)
{
object reflectedValue = subject.GetType().GetProperty(field).GetValue(subject, null);
return reflectedValue != null ? reflectedValue.ToString() : "";
}
但是得到錯誤「'System.Collections.Generic.IEnumerable'd oes不包含'OrderBy'和最好的擴展方法重載定義'System.Linq.Dynamic.DynamicQueryable.OrderBy(System.Linq.IQueryable,string,params object [])'有一些無效參數「
任何想法?我是新來的,只是在我花時間實際完成並正確地學習之前嘗試做一些工作。
感謝您的回覆。我實際上使用這個比較器http://www.davekoelle.com/files/AlphanumComparator.cs,我認爲它是好的,因爲它期待一個普通的對象? –
順便說一句,當我嘗試你的包裝,我得到這個消息「的非泛型類型'System.Collections.IComparer'不能用於類型參數」 - 忽略這一點,意識到我沒有包括System.Collections.Generic –
是的,你需要正確的使用指令:) –