gpt4 book ai didi

VB.Net 使用属性名称对列表进行排序

转载 作者:行者123 更新时间:2023-12-02 02:36:10 24 4
gpt4 key购买 nike

我有一个包含 Client 对象的列表。我想通过使用属性名称升序或降序对列表进行排序,这是我在 viewstate 的代码中已有的: ViewState("PropertyName")ViewState("Order")

Dim objList As List(Of Client) = Session("ClientList")  
objList.Sort(ViewState("PropertyName") + " " + ViewState("Order"))
datarepeater.datasource = objList

我怎样才能实现这个目标?

最佳答案

通常,如果您知道要排序的属性,则可以执行如下操作:

clients.Sort(Function(x, y) x.Name.CompareTo(y.Name))

在上面的示例中,我当然是对 Name 属性进行排序(我不知道 Client 类有哪些属性,我只是使用以此为例。

但是,由于您直到运行时才知道要使用哪个属性,因此您需要做一些更复杂的事情。如果您确实想使用类的实际属性名称,您可以使用Reflection动态检索属性的值,例如:

clients.Sort(Function(x, y)
Dim xProperty As PropertyInfo = x.GetType().GetProperty(ViewState("PropertyName").ToString)
Dim yProperty As PropertyInfo = y.GetType().GetProperty(ViewState("PropertyName").ToString)
Dim xValue As Object = xProperty.GetValue(x)
Dim yValue As Object = yProperty.GetValue(y)
Return xValue.ToString().CompareTo(yValue.ToString())
End Function)

要反转排序顺序,只需将返回值乘以-1,或者切换要比较的对象。例如:

If ViewState("Order") = "Ascending" Then
Return xValue.ToString().CompareTo(yValue.ToString())
Else
Return yValue.ToString().CompareTo(xValue.ToString())
End If

关于VB.Net 使用属性名称对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22252794/

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