我有一个变量定义为:
List<List<A>> mylist;
,其中
public class A
{
int b;
int c;
}
我想知道是否有一个lambda表达式可以执行以下操作:
for(int i = 0; i < mylist.Count; ++i)
{
for(int j = 0; j < mylist[i].Count; ++j)
{
if(mylist[i][j].b < 10) mylist[i][j].b = 0;
else mylist[i][j].b = 1;
}
}
答案 0 :(得分:4)
您的for循环可以转换为:
List<List<A>> mylist = new List<List<A>>();
foreach (var t1 in mylist.SelectMany(t => t))
{
t1.b = t1.b < 10 ? 0 : 1;
}
答案 1 :(得分:1)
尽管有一些关于List<T>.ForEach
语句可用性的讨论,但这可以执行此任务:
mylist.ForEach(x => x.Foreach(y => y.b = (y.b < 10) ? 0 : 1));
或者在foreach
循环中展开它:
foreach(List<A> la in mylist) {
foreach(A a in la) {
a.b = (a.b < 10) ? 0 : 1;
}
}
(condition) ? val_true : val_false
是ternary operator。