【问题标题】:How to return an access a split string while using LINQ?使用 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?

标签: c# linq


【解决方案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()
                              );
      

      【讨论】:

        猜你喜欢
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        相关资源
        最近更新 更多