c# - Linq 对象 : TakeWhileOrFirst

标签 c# linq-to-objects

使用 linq 将以下内容应用于序列的最易读的方法是什么:

TakeWhile elements are valid but always at least the first element

编辑:我更新了标题,更准确地说。对于任何混淆,我深表歉意,下面的答案肯定教会了我一些东西!

预期的行为是这样的:在元素有效时获取。如果结果是一个空序列,无论如何都取第一个元素。

最佳答案

我认为这使得意图非常明确:

things.TakeWhile(x => x.Whatever).DefaultIfEmpty(things.First());

我之前更详细的解决方案:

var query = things.TakeWhile(x => x.Whatever);
if (!query.Any()) { query = things.Take(1); }

关于c# - Linq 对象 : TakeWhileOrFirst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939708/

相关文章:

linq-to-objects - 根据值过滤 linq 查找

c# - 聚合值直到达到限制

c# - 如果数组为空,LINQ 返回 null

c# - 日期时间未指定种类

c# - OptionalFieldAttribute 真的有效吗?

c# - C#编译器将相同的标识符视为同一函数中的不同类型。

c# - LINQPad 如何引用其他类,例如LINQ in Action 示例中的书籍

c# - 对多字母字符串进行排序

c# - 将表达式<Func<T,T,bool>> 转换为表达式<Func<T,bool>>

c# - 无法从用法中推断出类型参数,有人可以帮忙吗?