1
我想按列表项中包含的函数的结果对列表进行排序。怎么会这样做呢?按函数结果排序列表
这里是一个例子。比方说,我有以下对象:
Public Class MyListObject
Public MyText1 As String
Public MyText2 As String
Public Function AddSuffix(ByVal MySuffix As String) As String
Return Mytext1 & MySuffix
End Function
End Class
(大型过于简单的例子的缘故)
之后,我有这些对象的列表:
Dim ResultList As New List(Of MyListObject)
现在,例如,按字段MyText1
值排序列表,我用这个:
ResultList = ResultList.OrderBy(Function(x) GetType(MyListObject).GetField("MyText1").GetValue(x)).ToList
(使用d反射,所以我可以将字段名称作为字符串传递)
如何通过功能AddSuffix
结果对此列表进行排序并同时传递参数MySuffix
?
我想这将是这个样子,但显然这是行不通
ResultList = ResultList.OrderBy(Function(x) GetType(MyListObject).GetField("AddSuffix(""_myCustomSuffix"")").GetValue(x)).ToList
PS。我意识到,在这个例子中,这个函数几乎没有意义。实际代码要复杂得多,而且函数会为每个列表项返回不同的可排序数据。
哇。这比我想象的要容易得多。这两个例子都适用于我的案例。谢谢!! 最初我使用反射来按字段值进行排序 - 我需要以某种方式将字段名称作为字符串传递。但对于这种情况,我只是想通了,我只需要传递函数的参数,而不是函数名称它自己。因此不需要反思。好极了。 –