C# 显示冗余数据的列表视图
在下面的代码中,我将数据添加到列表视图中,但最终在其中包含冗余项。请告诉我哪里出了问题C# 显示冗余数据的列表视图,c#,listview,redundancy,C#,Listview,Redundancy,在下面的代码中,我将数据添加到列表视图中,但最终在其中包含冗余项。请告诉我哪里出了问题 private void button2_Click(object sender, EventArgs e) { listView1.Items.Clear(); StreamReader sr = new StreamReader("C:\\sample.txt"); string s; s = sr.ReadLine();
private void button2_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
StreamReader sr = new StreamReader("C:\\sample.txt");
string s;
s = sr.ReadLine();
while (s != null)
{
s = sr.ReadLine();
var m = Regex.Match(s, @"^([a-zA-Z._]+)@([\d]+)");
if(m.Success)
{
allcont ac = new allcont();
ac.name = m.Groups[1].Value;
ac.number = m.Groups[2].Value;
con.Add(ac);
foreach (allcont aa in con)
{
ListViewItem i = new ListViewItem(new string[] { aa.name, aa.number });
i.Tag = aa;
listView1.Items.Add(i);
}
s = sr.ReadLine();
}
}
sr.Close();
}
contacts con = new contacts();
public class contacts:List<allcont>
{
}
public class allcont
{
public string name;
public string number;
}
}
更新:这是我的列表视图显示的数据:
name number
wer 123
wer 123
erty 098
wer 123
erty 098
sdf 645
wer 123
erty 098
sdf 645
wer 123
erty 098
sdf 645
ytu 432
我猜你得到的是
wer@123
wer@123
erty@098
wer@123
erty@098
sdf@645
wer@123
erty@098
sdf@645
ytu@432
原因:你这里有个问题
allcont ac = new allcont();
ac.name = m.Groups[1].Value;
ac.number = m.Groups[2].Value;
con.Add(ac);
foreach (allcont aa in con)
{
ListViewItem i = new ListViewItem(new string[] { aa.name, aa.number });
i.Tag = aa;
listView1.Items.Add(i);
}
因为这是在while循环中完成的。(您在每个循环中将内容添加到列表con
,然后在while循环中循环此“递增列表”)
所以你应该移动“内环”
在while循环之外(在
sr.Close
之后)我想你会得到类似的结果
wer@123
wer@123
erty@098
wer@123
erty@098
sdf@645
wer@123
erty@098
sdf@645
ytu@432
原因:你这里有个问题
allcont ac = new allcont();
ac.name = m.Groups[1].Value;
ac.number = m.Groups[2].Value;
con.Add(ac);
foreach (allcont aa in con)
{
ListViewItem i = new ListViewItem(new string[] { aa.name, aa.number });
i.Tag = aa;
listView1.Items.Add(i);
}
因为这是在while循环中完成的。(您在每个循环中将内容添加到列表con
,然后在while循环中循环此“递增列表”)
所以你应该移动“内环”
在while循环之外(在sr.Close
之后)
您正在每个匹配项上迭代完整con集合去掉内环
allcont ac = new allcont();
ac.name = m.Groups[1].Value;
ac.number = m.Groups[2].Value;
con.Add(ac);
ListViewItem i = new ListViewItem(new string[] { ac.name, ac.number });
i.Tag = aa;
listView1.Items.Add(i);
您正在每个匹配项上迭代完整con集合去掉内环
allcont ac = new allcont();
ac.name = m.Groups[1].Value;
ac.number = m.Groups[2].Value;
con.Add(ac);
ListViewItem i = new ListViewItem(new string[] { ac.name, ac.number });
i.Tag = aa;
listView1.Items.Add(i);
列表是什么样子的?冗余可以是很多事情…列表是什么样子的?冗余可以是很多事情。。。