当前位置: 首页 > 编程语言 > C#

具有两个或多个属性共享的IQueryable订单

时间:2023-04-10 23:53:52 C#

具有两个或多个属性的IQueryable订单我目前正在使用IQueryableOrderBy方法对自定义对象列表进行排序,如下所示:mylist.AsQueryable().OrderBy("PropertyName");现在我想按多个属性排序。有没有办法做到这一点?谢谢,YannisOrderBy(i=>i.PropertyName).ThenBy(i=>i.AnotherProperty)在OrderBy和ThenBy中,您必须提供keySelector函数,该函数从对象中选择要排序的键。因此,如果您在运行时只知道属性名称,则可以使用反射来创建这样的函数:varpropertyInfo=i.GetType().GetProperty("PropertyName");varsortedList=myList.OrderBy(i=>propertyInfo.GetValue(i,null))但它会比直接访问属性慢。您还可以使用Linq.Expressions“即时”编译此类函数,它比反射快,但不是很容易。或者您可以在WPF中使用CollectionViewSource及其排序功能。并且不要忘记OrderBy()返回一个排序的枚举,它不会对现有列表进行排序。在您的示例中,您没有将排序列表保存到变量中。您可以使用.ThenBy:varresult=mylist.AsQueryable().OrderBy(x=>x.PropertyName).ThenBy(x=>x.SomeOtherProperty);您可能希望使用ThenBy扩展方法能够按多个字段排序returnmyList.AsQueryable().OrderBy(m=>m.Property1).ThenBy(m=>m.Property2);如果你想要动态的Linq,看看LinqKit。我最近从这里实现了Microsoft的DynamicLinq库,并且能够使用字符串对两个字段进行排序。奇妙!不知道是不是.NET5的。以上就是C#学习教程:IQueryableorderwithtwoormoreattributes的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: