2016-08-26 33 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() 
         );