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

Когда вы перебираете карту, она превращается в список ключевых слов (т. Е. Вы используете кортеж):

Enum.each  %{a: 1, b: 2, c: 3},  fn {key, value} ->
  IO.puts "#{key} : #{value}"
end 

В вашем случае вам нужно найти совпадение в части key вы кортеж:

val_map = %{"pri" => %{"tit" => "name1"}}
fp = fn ({"pri", value}) -> value; {other_key, value} -> value end

Где во второй части вы можете сделать что-то еще со значением: преобразовать, не возвращать его и т. д.

В этом случае он вернет массив карт (значений) из вашей исходной карты:

Enum.each(val_map, fp)
# [%{"tit" => "name1"}]
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
поделиться
Другие вопросы по тегам:

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