使用if语句和StreamReader从文本文件中拆分数据

时间:2014-05-09 23:33:47

标签: c#

我正在尝试使用组合框和加载功能。

代码代表:(只是加载数据 - 第二个对象)

private void btnLoadBooks_Click(object sender, EventArgs e)
{
    string[] lineOfContents = File.ReadAllLines("BookList.txt");
    foreach (var line in lineOfContents)
    {
        string[] tokens = line.Split(',');
        lbxBooks.Items.Add(tokens[1]);
    }
}

有没有办法将组合框用作过滤器,例如。

if (cbxBookType.SelectedItem == "PB")
{
    sting[] tokens = line.split(',');
    <read line only with "PB"????>
}
else if...

这会有用吗?或者有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您的意思是,包含PB的行可以执行此操作:

 foreach (var line in  File.ReadLines("BookList.txt")
                           .Where(x => x.Contains("PB")))
{
     string[] tokens = line.Split(',');
     lbxBooks.Items.Add(tokens[1]);
}

如果您想根据SelectedItem使用ComboBox的{​​{1}}来搜索这些行。

答案 1 :(得分:0)

如果第一列PB似乎是您的实际要求,则另一种选择第二列的方法。评论你的问题:

var values = File.ReadLines("BookList.txt")
    .Select(l => l.Split(','))
    .Where(arr => arr[0] == "PB")
    .Select(arr => arr[1]);
lbxBooks.Items.AddRange(values.ToArray());