IEnumerable <T> / IQueryable <T>上的动态LINQ OrderBy

IEnumerable <T> / IQueryable <T>上的动态LINQ OrderBy

我在动态LINQ 的VS2008示例中找到了一个示例,它允许您使用类似sql的字符串(例如,OrderBy("Name, Age DESC"))用于排序。不幸的是,包含的方法仅适用于IQueryable<T>;。有没有办法获得此功能IEnumerable<T>



米脂
浏览 628回答 3
3回答

喵喔喔

我想使用反射来获得你想要排序的任何属性是有用的:IEnumerable<T>&nbsp;myEnumerablesvar&nbsp;query=from&nbsp;enumerable&nbsp;in&nbsp;myenumerables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;some&nbsp;criteria&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orderby&nbsp;GetPropertyValue(enumerable,"SomeProperty") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;enumerableprivate&nbsp;static&nbsp;object&nbsp;GetPropertyValue(object&nbsp;obj,&nbsp;string&nbsp;property){ &nbsp;&nbsp;&nbsp;&nbsp;System.Reflection.PropertyInfo&nbsp;propertyInfo=obj.GetType().GetProperty(property); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;propertyInfo.GetValue(obj,&nbsp;null);}请注意,使用反射比直接访问属性要慢得多,因此必须调查性能。
打开App,查看更多内容
随时随地看视频慕课网APP