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

本文关键字:文件 分离 数据 文本 if 语句 StreamReader 使用 | 更新日期: 2023-09-27 18:02:49

我正在尝试在加载函数旁边使用组合框。

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

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...

这样可以吗?还是有更简单的方法?

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

如果您的意思是包含PB的行,您可以这样做:

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

如果您想根据ComboBoxSelectedItem搜索行,请使用.Where(x => x.Contains(cbxBookType.SelectedItem.ToString())

这里是另一种方法,如果第一列是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());