C#如何筛选listAlert中大于1的元素并在ListView控件中展示
实现方案
你现有代码存在两个核心问题:
- 没有对
listAlert集合做过滤逻辑,直接绑定了全量数据 ItemsSource赋值操作放在了foreach循环内,会造成重复多次赋值,完全冗余;另外Math.Max(maxAlertt, maxAlertt)的逻辑无实际作用,返回值就是参数本身,可以直接删除。
实现过滤只需要用Linq的Where方法筛选符合条件的元素即可,操作步骤如下:
- 首先在代码文件顶部引入Linq命名空间:
using System.Linq;
- 替换你现有的整段foreach代码为以下内容:
// 筛选levelForecast数值大于1的元素 var filteredAlertList = listAlert.Where(item => item.levelForecast > 1).ToList(); // 绑定过滤后的集合到ListView控件 lstLevel2.ItemsSource = filteredAlertList;
如果你的集合需要后续动态增删且同步刷新UI,可以将过滤后的结果转为ObservableCollection类型再绑定即可。
内容的提问来源于stack exchange,提问作者Blagovest Pizhev
相关产品推荐
相关产品推荐

