2013-12-15 2 views
1

У меня есть простой список клиентов:Что лучшая стратегия для комплекса сортировки списка() в виде строки

Dim CustArr() As String = GetOriginalList() 
    'customer list looks like this 
    'Customer number, first name, last name 
    '1234 John Doe 
    '1500 Jane Smith 
    'etc. 

можно легко разделить номер клиента, имя и фамилию в пространстве (Дон» волнуйтесь об осложнениях, как суффиксы или название):

'loop through the list of names 
    For Each CustName As String In CustArr 

     'split out each word within the names 
     Dim spl() As String = CustName.Split(" ") 

     'add to table or 2-dimensional array 

    Next 

    'sort by lastname then by first name then by customer number 

Я знаю, как сделать УЗДЫ() и добавить в таблицу или массив. Я хотел бы получить сложный вид, например Excel, который можно делать (но не хочу использовать Excel). Я хочу сортировать по фамилии, а затем по имени, а затем по номеру клиента.

Если это имеет значение, я хочу вывести на двумерный массив.

Какова наилучшая стратегия для достижения этой цели? Использовать dataTable? 2-мерный массив? Linq?

+0

Каковы два измерения? –

+0

Три столбца с именем, фамилией и номером клиента; имеет много клиентов –

+1

В этом случае ответ Тима Шмельтера с использованием списка пользовательского класса, вероятно, будет отличным выбором. –

ответ

2

Вместо массива я бы использовать пользовательский класс, который является более удобным для чтения и ремонтопригодны:

Class Customer 
    Property Number As String 
    Property LastName As String 
    Property FirstName As String 
End Class 

Теперь вы можете использовать LINQ для выбора и заказа клиентов из линий:

Dim CustArr() As String = GetOriginalList() 
Dim customers As IEnumerable(Of Customer) = 
    From line In CustArr.Skip(1) ' skip the header line ' 
    Let cols = line.Split({" "}, StringSplitOptions.RemoveEmptyEntries) 
    Where cols.Length = 3 
    Select c = New Customer With { 
     .Number = cols(0).Trim(), 
     .FirstName = cols(1).Trim(), 
     .LastName = cols(2).Trim() 
    } 
    Order By c.LastName, c.FirstName, c.Number 
Dim customerList As List(Of Customer) = customers.ToList() 
+0

Это красивый код! Поэтому я могу использовать Linq для запроса массива и его разделения одновременно. Мне действительно нужно обновить свои навыки. –

+0

ach! поэтому lange nicht zu Deutschland; Ich möchte wieder kommen –

+0

@ D_Bester: Добро пожаловать :) –

Смежные вопросы