我有一个这样的文本文件:
==
a
03/09
==
b
02/09
我想从文本文件中创建一个listView,如下所示:
我怎样才能在C#中做到这一点?
我试过这段代码:
ListViewItem lvi = new ListViewItem();
var sectionCharacters = File.ReadLines("bdaylist.list")
.SkipWhile(s => s != "==")
.Skip(1)
.Skip(2)
.ToList();
lvi.Text = sectionCharacters[1];
lvi.SubItems.Add(sectionCharacters[2]);
listView1.Items.Add(lvi);
但它只能读取 b 和 02/09
答案 0 :(得分:1)
你可以试试这个:
var sectionCharacters = File.ReadLines("your_filepath_here").ToList();
//To remove '=='
sectionCharacters.Where(i => i.Trim() == "==").ToList()
.ForEach(item => sectionCharacters.Remove(item));
//To remove 'blank lines', if any
sectionCharacters.Where(i => i.Trim() == "").ToList()
.ForEach(item => sectionCharacters.Remove(item));
for (int i = 0; i < sectionCharacters.Count; i += 2)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = sectionCharacters[i];
lvi.SubItems.Add(sectionCharacters[i + 1]);
listView1.Items.Add(lvi);
}
输出:
PS:这是一个简单的listView来显示输出。您可能会想到如何处理带有复选框的listView。
答案 1 :(得分:1)
您正在使用Skip(1)和Skip(2)忽略前两个条目。您也只是在列表中添加一个项目。您可以如下更改您的linq,并检查集合中的偶数项目,以便将它们添加到列表视图中。
var sectionCharacters = File.ReadAllLines("bdaylist.list").Where(s => s != "==").ToList();
for (int i = 0; i < sectionCharacters.Count; i++)
{
if (i % 2 == 0)
{
var lvi = new ListViewItem { Text = sectionCharacters[i] };
lvi.SubItems.Add(sectionCharacters[i + 1]);
listView1.Items.Add(lvi);
}
}