如何在使用LINQ时返回对拆分字符串的访问?

时间:2016-08-26 00:35:39

标签: c# linq

我有一个使用File.ReadLines(filepath)读取的文本文件。它填充了使用:分隔的名字和姓氏。有没有办法使用LINQ,我可以在foreach循环中访问返回数据类型的名字和姓氏?

// 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 :

3 个答案:

答案 0 :(得分:2)

嗯,你快到了。你所缺少的就是从数组中的第一项获取firstName,在第二项中获取姓氏。

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

答案 1 :(得分:0)

list[0]是第一个,list[1]是第二个

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

答案 2 :(得分: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()
                        );