Фильтровать уникальные отдельные значения, используя первые 3 цифры vb.net

#vb.net

#vb.net

Вопрос:

Мне нужно отфильтровать номер телефона по оператору сотовой связи в vb.net пример:

  • оператор 1 первые 3 цифры 811
  • оператор 2 первые 3 цифры 812
  • оператор 3 первые 3 цифры 822

из этого

  • 8113634563
  • 8122345235
  • 8226786767

к этому

  • оператор 1 первые 3 цифры 811 8113634563

  • оператор 2 первые 3 цифры 812 8122345235

  • оператор 3 первые 3 цифры 822 8226786767

Комментарии:

1. Что вы хотите сделать, если вы получите более одного телефонного номера, начинающегося с одних и тех же трех символов, скажем, 8113634563 и 8112222222?

Ответ №1:

Проверьте этот пример:

     Sub Main()
        Dim phones As String() = {"8113634563", "8113777763", "8122345235", "8226786767"}

        Dim s As Dictionary(Of String, List(Of String)) = phones.GroupBy(Function(ph) ph.Substring(0, 3)).ToDictionary(Function(g) g.Key, Function(g) g.Select(Function(p) p).ToList)

        For Each item In s
            Console.WriteLine("{0}", item.Key)

            For Each p In item.Value
                Console.WriteLine("operator first 3 digit {0} {1}", item.Key, p)
            Next

            Console.WriteLine()
        Next

        Console.ReadLine()
    End Sub
  

Ответ №2:

Вы можете использовать LINQ.

Просто предположим, что каждое число является строкой, которая является в свою очередь IEnumerable<char> ( IEnumerable(Of Char) в VB.NET ).

Затем вы можете выполнить цикл по списку чисел, применить Enumerable.Take(Integer) функцию со значением 3 к каждому элементу и сравнить результат (наилучшим было бы a select case ) с 811 , 812 и 822 . Затем вы можете присвоить текущее число соответствующему оператору