2016-08-26 34 views
1

我有一個正在使用File.ReadLines(filepath)讀取的文本文件。它充滿了使用a分隔的名字和姓氏。有沒有辦法使用LINQ,我可以在foreach循環中訪問返回的數據類型的名字和姓氏?如何在使用LINQ時返回一個拆分字符串?

// john:doe 
// david:smith 
// michael:rogers 

var Names = File.ReadLines(filepath) 
    .Select(line => line.Split(':')); 

foreach (var list in Names) 
listbox1.Items.Add(list); //(first name) before : 
listbox2.Items.Add(list); //(last name) after : 
+0

是否mullti列'ListBox'? –

回答

2

嗯,你幾乎沒有。你所缺少的是從數組中的第一個項目獲取firstName,並在第二個項目中獲取姓氏。

foreach (var list in Names) 
{ 
    listbox1.Items.Add(list[0]); //(first name) before : 
    listbox2.Items.Add(list[1]); //(last name) after : 
} 
0

list[0]是第一和list[1]第二

listbox1.DataSource = Names.Select(a => a[0]).ToArray(); 
listbox2.DataSource = Names.Select(a => a[1]).ToArray(); 
0

根據你的榜樣,我認爲它是多列ListBox

使用SelectMany可以在拆分之後展開層次​​結構。

listbox1.DataSource = File.ReadLines(filepath) 
          .SelectMany(line=>line.Split(':')); 

或者,使用AddRange方法做到這一點

ListBox1.Items.AddRange(File.ReadLines(filepath) 
          .SelectMany(line=>line.Split(':') 
          .Cast<object>() // I think this is redundant remove if not required. 
          .ToArray() 
         );