2016-12-29 1 views
-2

У меня есть ListBox userOptions типа объекта дает мне результат, каккак разделить массив строк после того, как фиксированной длины

{ Number = 1, FName = "ABC", LName = "D" }  
{ Number = 2, FName = "EFG", LName = "E" }  
{ Number = 3, FName = "HIJ", LName = "F" }  
{ Number = 4, FName = "ABC", LName = "G" } 

и нужно хранить в виде массива строк только FName информация, как

string[] data = new string[3]; 
string data[0]=ABC 
string data[1]=EFG 
string data[2]=HIJ 

Также удалять дубликаты данных из FName;

Я попытался с помощью следующего кода, но это отнимает много времени, как я не могу разделить данные строки массива из FName = "ABC" просто 'ABC'

for (int i = 0; i < userOptions.Count; i++) 
{ 
    foreach (object items in userOptions) 
    { 
     devicedata = userOptions[i].ToString(); 
     string[] Arr = devicedata .Split(','); 
     devdata[i] = Arr[1];        
    } 
} 

здесь devicedata дает мне эту информацию { Number = 1, FName = "ABC", LName = "D" } Arr разбивает данные как FName = "ABC" и сохраняет в devdata[i] Как я могу объединить мой код выше двух, чтобы я мог напрямую получать отдельные данные, такие как

string data[0]= ABC 
string data[1]= EFG 
string data[2]= HIJ 
+0

Весь код потребляет время и до тех пор, как эти цифры ниже 1000 не может быть действительно актуальной. –

+2

Кажется, вам нужен 'var result = userOptions.Select (s => s.FName) .Distinct(). ToArray();' –

+0

@ WiktorStribiżew: это должно быть дано в качестве ответа. Вероятно, это самый краткий способ решения проблемы. –

ответ

1

Если вы действительно получаете JSON (что странно), вы также можете просто использовать регулярное выражение для довольно простого решения.

Ungreedy:

FName = "(.*)" 

Пример:

https://regex101.com/r/pCwz3r/1

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

  • Нет связанных вопросов^_^