如何使用foreach循环遍历多个列表(单变量访问元素)
解决方案
你写的&&拼接列表的写法是错的,&&是布尔逻辑运算符,根本不能用来拼集合。元组是并行遍历三个列表,每次取三个列表各一个元素,自然要三个变量,不符合你要把三个列表所有元素挨个走一遍的需求。
最简洁写法:用LINQ的Concat串接列表
先在代码顶部加命名空间引用:
using System.Linq;
然后循环直接这么写:
foreach (Button btn in appList.Concat(sequenceList).Concat(FunctionList)) { if (btn.FillColor != Color.White) { // 你的业务代码写这 } }
Concat会把三个列表按顺序拼成一个可遍历的序列,遍历顺序是先跑完appList所有元素,再跑sequenceList,最后跑FunctionList,全程只有btn一个循环变量,完全符合你的要求。
不想用LINQ的兼容写法
如果你的项目版本老,用不了LINQ,就把处理逻辑抽个方法,分别遍历三个列表调方法就行,效果一模一样:
void ProcessBtn(Button btn) { if (btn.FillColor != Color.White) { // 你的业务代码写这 } } foreach (Button btn in appList) ProcessBtn(btn); foreach (Button btn in sequenceList) ProcessBtn(btn); foreach (Button btn in FunctionList) ProcessBtn(btn);
补个小提醒:你原来代码里写的sequenceLsit拼错了,正确是sequenceList,别因为拼写错报编译错误。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

