gpt4 book ai didi

c# - IQueryable 按两个或多个属性排序

转载 作者:IT王子 更新时间:2023-10-29 04:15:28 26 4
gpt4 key购买 nike

我目前正在使用 IQueryable OrderBy 方法对自定义对象列表进行排序,如下所示:

mylist.AsQueryable().OrderBy("PropertyName");

现在我希望按多个属性进行排序。有什么办法吗?

谢谢,雅尼斯

最佳答案

OrderBy(i => i.PropertyName).ThenBy(i => i.AnotherProperty)

在 OrderBy 和 ThenBy 中,您必须提供 keySelector 函数,该函数从对象中选择用于排序的键。因此,如果您只在运行时知道属性名称,那么您可以使用 Reflection 来实现这样的功能,例如:

var propertyInfo = i.GetType().GetProperty("PropertyName"); 
var sortedList = myList.OrderBy(i => propertyInfo.GetValue(i, null))

但是会比较慢,那就直接访问属性吧。您也可以使用 Linq.Expressions 即时“编译”此类函数,它比反射更快,但不是很容易。或者您可以在 WPF 中使用 CollectionViewSource 及其排序功能。

并且不要忘记 OrderBy() 返回已排序的可枚举并且它不会对您现有的列表进行就地排序。在您的示例中,您没有将排序列表保存到变量。

关于c# - IQueryable 按两个或多个属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9787254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com