使用 LINQ 时如何返回访问拆分字符串?
Posted
技术标签:
【中文标题】使用 LINQ 时如何返回访问拆分字符串?【英文标题】:How to return an access a split string while using LINQ? 【发布时间】:2017-01-02 13:27:55 【问题描述】:我有一个正在使用 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 :
【问题讨论】:
多列ListBox
?
【参考方案1】:
嗯,你快到了。您所缺少的只是从数组中的第一项中获取 firstName 并在第二项中获取姓氏。
foreach (var list in Names)
listbox1.Items.Add(list[0]); //(first name) before :
listbox2.Items.Add(list[1]); //(last name) after :
【讨论】:
【参考方案2】:list[0]
是第一个,list[1]
是第二个
listbox1.DataSource = Names.Select(a => a[0]).ToArray();
listbox2.DataSource = Names.Select(a => a[1]).ToArray();
【讨论】:
【参考方案3】:根据您的示例,我认为它是不是多列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()
);
【讨论】:
以上是关于使用 LINQ 时如何返回访问拆分字符串?的主要内容,如果未能解决你的问题,请参考以下文章