我正在尝试找出一种在满足某些条件时使用 TakeWhile 来中断循环的方法。
即
var i = 0;
List<IContent> t = new List<IContent>();
// children is a List<> with lots of items
foreach (var x in children)
{
if (i >= 10)
{
break;
}
if (x.ContentTypeID == 123)
{
i++;
t.Add(x);
}
}
我想做的是改用 Linq 来编写
var i = 0;
var a = children.TakeWhile(
x =>
{
if (i >= 10)
{
break; // wont work
}
if (x.ContentTypeID == 123)
{
i++;
return true;
}
return false;
});
有什么想法吗?谢谢
最佳答案
这里不需要 TakeWhile
- 只需过滤符合您条件的项目,并且不超过 10 个匹配项目:
children.Where(x => x.ContentTypeID == 123).Take(10)
TakeWhile
在满足某些条件时获取所有 项目。但是您不需要获取所有项目 - 您想要跳过那些不需要 ContentTypeID
的项目。
关于c# - 当满足计数或长度条件时使用 TakeWhile 打破循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44282725/