Вид Универсальный список на двух или больше значениях

У нас есть универсальный Список (продукта), который должен быть отсортирован на двух или больше свойствах класса продукта.

Класс продукта имеет свойства "Popular", числовые (asc), "Нажатый" числовой (desc), строка "Имени" (asc). В порядке именования свойств мы хотим список к виду.

Как это может быть вид с оператором Lamba? Если Вы нашли для сортировки списка на основе одного свойства.

18
задан Jaymin 18 October 2019 в 10:09
поделиться

3 ответа

Чтобы ответить на ваш вопрос о лямбда-выражении, это слишком сложно для включения в лямбда-выражение, поскольку VB не поддерживает многострочные лямбда-выражения.

Для не-LINQ решение:

В качестве средства сравнения вам нужен именованный метод:

Private Function Comparer(ByVal x As Product, ByVal y As Product) As Integer
    Dim result As Integer = x.Popular.CompareTo(y.Popular)
    If result = 0 Then
        result = x.Clicked.CompareTo(y.Clicked)
        If result = 0 Then
            result = x.Name.CompareTo(y.Name)
        End If
    End If
    Return result
End Function

Использование:

theList.Sort(AddressOf Comparer)
5
ответ дан 30 November 2019 в 06:29
поделиться

Извините, но знаете ли вы какой-нибудь C #?

products.OrderBy(p => p.Popular).
    ThenByDescending(p => p.Clicked).
    ThenBy(p => p.Name);

Сможете ли вы получить из этого то, что вам нужно?

3
ответ дан 30 November 2019 в 06:29
поделиться

РЕДАКТИРОВАТЬ Только что понял, что это вопрос VB. Вот версия решения VB.Net

Dim list = GetSomeList()
Dim sorted = list. _
  OrderBy(Function(x) x.Popular). _
  ThenBy(Function(x) x.Clicked). _
  ThenBy(Function(x) x.Name)

C #. Попробуйте выполнить следующее

var list = GetSomeList();
var sorted = list.OrderBy(x => x.Popular).ThenBy(x => x.Clicked).ThenBy(x => x.Name);
37
ответ дан 30 November 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: