【问题标题】:vb- sort list of class by sortexpressionvb-通过sortexpression对类列表进行排序
【发布时间】:2014-03-04 08:11:57
【问题描述】:

我有一个包含很多字段的类。 我想按一个属性排序我班级的项目列表,然后按另一个,依此类推... 我需要使用 SortExpression 和 SortDirection 来做到这一点。

如何在 vb 中做到这一点?

Dim LsDocuments As List (Of clsDoc) = GetDocuments() 

clsDoc 是一个具有属性的类:

Date
Hour
Key
Office

我需要类似:LsDocuments.orderby("Date","Asc"),而不像 LsDocuments.orderby(Functuion(x) x.Date),因为它不是通用的——每次我需要按其他属性排序(并且选择案例非常不经典)。

【问题讨论】:

  • 术语 sortexpression 和 sortdirection 与 GridView 相关,您的问题是否仅与 ASP.NET GridView 相关?无论如何,你应该给我们看一些代码。
  • 是的,现在我真的在使用 dridview。但我的问题很笼统——也适用于与 gridview 无关的时间。我只需要一种方法来进行列表排序,不是通过特定的属性,而是通过表达式。
  • 您的问题笼统,您应该向我们展示您正在尝试的内容以及您遇到的问题。否则它有被关闭的危险过于宽泛
  • Dim LsDocuments As List (Of clsDoc) = GetDocuments() clsDoc 是一个具有属性的类:Date,Hour,Key,Office... 我需要类似:LsDocuments.orderby("Date", “Asc”),而不像 LsDocuments.orderby(Functuion(x) x.Date) 因为它不是一般的 - 每次我都需要按其他属性排序(并且选择案例非常不经典)。抱歉,我无法发布更多代码 - 我工作的互联网连接不允许我进行复制/粘贴...
  • 不要在 cmets 中发布代码,而是使用相关信息编辑您的问题。我已经编辑了您的问题,但您应该包括更多(例如类型)。除此之外,GetDocuments 是否从数据库中返回对象?如果是这样,您为什么不首先订购它们?

标签: vb.net sorting


【解决方案1】:

我经常做的是创建一个包含所有值作为字符串的属性,然后按该属性排序。只需通过使其固定宽度来确保您的字符串是可排序的。例如:

Public Readonly Property Sort1 as string
 Get
  Return Date.Tostring("s") & Hour.Tostring.PadLeft(2,"0") & Key.PadRight(50," ") & Office.PadRight(50," ")
 End Get
End Property

【讨论】:

  • 不错的解决方案。仍然受到限制 - 要排序的属性的顺序是固定的 - 如果要更改排序表达式,则必须创建新属性。但仍然 - 创造性的解决方案...
  • 您还可以创建自己的排序方法,通过实现 IComparable 接口,您可以在运行时传递多个属性。如果你使用泛型,你可以像下面这样使用 Linq:stackoverflow.com/questions/869438/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2012-06-13
相关资源
最近更新 更多