c# - 根据条件获取特定的列表视图行
问题描述
我有一个包含不同条目的列表视图(见图(A)。我想根据条件提取一些特定的行。到目前为止,我有这个代码:
private void Button2_Click(object sender, EventArgs e)
{
ArrayList listing = new ArrayList();
for (int i = 0; i < listView2.Items.Count; i++)
{
string columnOne = listView2.Items[i].Text;
string columnTwo = listView2.Items[i].SubItems[1].Text;
int numb = int.Parse(listView2.Items[i].SubItems[2].Text);
string columnThree = listView2.Items[i].SubItems[3].Text;
if(numb >= 2)
{
listing.Add($"{columnOne},{columnTwo},{numb},{columnThree}");
}
}
foreach (string item in listing)
{
listView2.Items.Clear();
ListViewItem listItem = new ListViewItem();
var separ = item.Split(',');
listItem.Text = separ[0].Trim();
listItem.SubItems.Add(separ[1]);
listItem.SubItems.Add(separ[2]);
listItem.SubItems.Add(separ[3]);
listView2.Items.Add(listItem);
}
}
我得到图(B),但通常我应该得到图(C)。如何做到这一点?
解决方案
从列表中删除不匹配的项目在这里更有意义。对于你的问题,执行一个反向循环,尝试使用该int.TryParse
方法将第三个子项的文本转换为整数值,ListViewItem
如果值小于2,则删除。
private void button2_Click(object sender, EventArgs e)
{
for (var i = listView2.Items.Count - 1; i >= 0; i--)
{
if (int.TryParse(listView2.Items[i].SubItems[2].Text, out var num) && num < 2)
{
listView2.Items.RemoveAt(i);
}
}
}
但是,如果您想获取匹配项目的列表:
// +
using System.Collections.Generic;
private void button2_Click(object sender, EventArgs e)
{
var items = new List<ListViewItem>();
for (var i = 0; i < listView2.Items.Count; i++)
{
if (int.TryParse(listView2.Items[i].SubItems[2].Text, out var num) && num >= 2)
{
items.Add(listView2.Items[i]);
}
}
// ...
}
或LINQ方式:
// +
using System.Linq;
private void button2_Click(object sender, EventArgs e)
{
var items = listView2.Items.Cast<ListViewItem>()
.Where(x => int.TryParse(x.SubItems[2].Text, out var num) && num >= 2)
.ToList();
// ...
}
推荐阅读
- java - Amazon Cognito 中的用户角色
- javascript - Excel javascript api无法从工作表Edge vs IE读取范围
- php - 如何在查询参数中发送 pageNumber 和 pageSize - 使用 Laravel
- amazon-web-services - 使用 PowerShell 的 Where-Object -Filterscript 和 AWS EC2 标签来过滤资源
- java - 从 web 服务检索数据后,Android 数据绑定不更新 UI
- python-3.x - 如何将列表内字符串中的字符传递到列表列表中
- python - 路径python的问题,我该如何解决?
- javascript - 为什么我的 vue 应用会在父 iframe 中触发 onload 事件
- python - 是否依赖于 str(Bool) 语言环境
- c# - 何时在 EF 中使用 WillCascadeOnDelete(false)?