[英]How to sort properties of object and populate into an ArrayList
How can I sort the following properties in the class then store in an ArrayList
? 如何在类中对以下属性进行排序,然后存储在ArrayList
? I have populated that to an ArrayList
but there an issue when page is reloaded items order in the repeater will change. 我已经将其填充到ArrayList
但是重新加载页面时,转发器中的订单顺序将发生变化。 here is population cookies value in to an array 这是人口饼干的价值数组
Dim myCookies As HttpCookie=HttpContext.Current.Request.Cookies("Mycard")
Dim varArryItems As ArrayList = New ArrayList
For i AsInteger=0 To varCookies.Values.Count-1
Dim AllValues As String()=myCookies.Values(i).Split("|"c)
Dim item As objCard=New objCard
item.P_ItemID=Integer.Parse(AllValues(0))
item.P_ItemTitle=AllValues(1).ToString
item.P_BrandTitle=AllValues(2).ToString
item.P_ItemImg=AllValues(3).ToString
item.P_ItemPrice=Decimal.Parse(AllValues(4))
'item.P_ItemQauntity=Integer.Parse(AllValues(5))
'item.P_ItemQauntitySelected=Integer.Parse(AllValues(6))
item.P_BarcodeID=Integer.Parse(AllValues(7))
item.P_TotalItemPrice=Decimal.Parse(AllValues(8))
varArryItems.Add(item)
Next
rptcart.DataSource=varArryItems
rptcart.DataBind()
Here is my objCard
class store cookies values I need sort all properties I have tried suing ArrayList
Sort method it wasn't work for me. 这是我的objCard
类存储cookie值,我需要对所有尝试过使用ArrayList
Sort方法尝试过的属性进行排序,这对我来说不起作用。
Public Class objCard
Private ID As Integer
Private ItemID As Integer
Private BarcodeID As Integer
Private ItemTitle As String
Private BrandTitle As String
Private ItemImg As String
Private ItemPrice As Decimal
Private TotalItemPrice As String
Private ItemQauntity As Integer
Private ItemQauntitySelected As Integer
Public Property P_ID As Integer
Get
Return Me.ID
End Get
Set
Me.ID = Value
End Set
End Property
Public Property P_ItemID As Integer
Get
Return Me.ItemID
End Get
Set
Me.ItemID = Value
End Set
End Property
Public Property P_BarcodeID As Integer
Get
Return Me.BarcodeID
End Get
Set
Me.BarcodeID = Value
End Set
End Property
Public Property P_ItemTitle As String
Get
Return Me.ItemTitle
End Get
Set
Me.ItemTitle = Value
End Set
End Property
Public Property P_BrandTitle As String
Get
Return Me.BrandTitle
End Get
Set
Me.BrandTitle = Value
End Set
End Property
Public Property P_ItemImg As String
Get
Return Me.ItemImg
End Get
Set
Me.ItemImg = Value
End Set
End Property
Public Property P_ItemPrice As Decimal
Get
Return Me.ItemPrice
End Get
Set
Me.ItemPrice = Value
End Set
End Property
Public Property P_TotalItemPrice As String
Get
Return Me.TotalItemPrice
End Get
Set
Me.TotalItemPrice = Value
End Set
End Property
Public Property P_ItemQauntity As Integer
Get
Return Me.ItemQauntity
End Get
Set
Me.ItemQauntity = Value
End Set
End Property
Public Property P_ItemQauntitySelected As Integer
Get
Return Me.ItemQauntitySelected
End Get
Set
Me.ItemQauntitySelected = Value
End Set
End Property
End Class
If you have 如果你有
Public Class Card
Property ID As Integer
Property ItemID As Integer
Property BarcodeID As Integer
Property ItemTitle As String
Property BrandTitle As String
Property ItemImg As String
Property ItemPrice As Decimal
Property TotalItemPrice As Decimal
Property ItemQuantity As Integer
Property ItemQuantitySelected As Integer
End Class
Then you can use a List(Of Card)
to store the data. 然后,您可以使用List(Of Card)
来存储数据。 This has the advantange that the compiler knows that it has instanced of Card
in it instead of just some object. 它具有一个优势,编译器知道它具有Card
实例,而不仅仅是某些对象。
Dim myCookies As HttpCookie = HttpContext.Current.Request.Cookies("Mycard")
Dim cards = New List(Of Card)
For i As Integer = 0 To varCookies.Values.Count-1
Dim allValues As String() = myCookies.Values(i).Split("|"c)
Dim item = New Card
item.ItemID = Integer.Parse(allValues(0))
item.ItemTitle = allValues(1).ToString
item.BrandTitle = allValues(2).ToString
item.ItemImg = allValues(3).ToString
item.ItemPrice = Decimal.Parse(allValues(4))
'item.ItemQuantity = Integer.Parse(allValues(5))
'item.ItemQuantitySelected = Integer.Parse(allValues(6))
item.BarcodeID = Integer.Parse(allValues(7))
item.TotalItemPrice = Decimal.Parse(allValues(8))
cards.Add(item)
Next
And now that the compiler can get to the properties of the entries in the list, you can 现在,编译器可以获取列表中条目的属性,您可以
Dim dataToPresent = cards.OrderBy(function(c) c.ItemId).ToList()
rptcart.DataSource = dataToPresent
rptcart.DataBind()
and it will show the data in the order you chose. 它将按照您选择的顺序显示数据。
If you need to order by different properties at run-time then a search for "linq dynamic orderby" should give you useful code. 如果您需要在运行时通过不同的属性进行订购,那么搜索“ linq dynamic orderby”应该会为您提供有用的代码。
I noticed that you had Private TotalItemPrice As String
which conflicted with item.P_TotalItemPrice=Decimal.Parse(AllValues(8))
. 我注意到您有Private TotalItemPrice As String
,与item.P_TotalItemPrice=Decimal.Parse(AllValues(8))
冲突。 If you use Option Strict On
then Visual Studio will point out problems like that for you. 如果使用Option Strict On
则Visual Studio会为您指出类似的问题。
PS You have Dim myCookies
but you use varCookies.Values.Count
. PS:您有Dim myCookies
但使用的是varCookies.Values.Count
。 You may want to check that that is correct. 您可能要检查是否正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.