Как отсортировать свойства объекта и заполнить его в ArrayList

Как я могу отсортировать следующие свойства в классе, а затем сохранить их в ArrayList? Я заполнил это на ArrayList, но возникает проблема, когда страница перезагружается, порядок элементов в репитере изменится. вот значение куки-файлов в массиве

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()

Вот мои значения файлов cookie для хранилища класса objCard. Мне нужно отсортировать все свойства, которые я пытался подать в суд на метод сортировки ArrayList, это не сработало для меня.

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

Какую версию Visual Studio вы используете? Я спрашиваю, потому что List(Of objCard) было бы намного лучше использовать, чем ArrayList. И Автореализуемые свойства может сэкономить вам много ввода.

Andrew Morton 02.05.2018 12:24

Я использую Visual Studio 2017, просто мне нужно отсортировать все свойства, когда страница перезагружается, все элементы меняют порядок в репитере. Спасибо

Rebin 02.05.2018 13:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у тебя есть

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

Затем вы можете использовать List(Of Card) для хранения данных. Это имеет то преимущество, что компилятор знает, что в нем есть экземпляр 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

И теперь, когда компилятор может перейти к свойствам записей в списке, вы можете

Dim dataToPresent = cards.OrderBy(function(c) c.ItemId).ToList()
rptcart.DataSource = dataToPresent
rptcart.DataBind()

и он покажет данные в выбранном вами порядке.

Если вам нужно упорядочить по различным свойствам во время выполнения, поиск по запросу «linq dynamic orderby» должен дать вам полезный код.

Я заметил, что у вас есть Private TotalItemPrice As String, который конфликтует с item.P_TotalItemPrice=Decimal.Parse(AllValues(8)). Если вы используете Option Strict On, Visual Studio укажет вам на подобные проблемы.

P.S. У вас есть Dim myCookies, но вы используете varCookies.Values.Count. Вы можете проверить, что это правильно.

Другие вопросы по теме