Dav*_*fer 17 .net c# linq linq-to-objects
我想TakeWhile在LINQ to Objects上使用LINQ 函数.但是,我还需要知道"破坏"函数的第一个元素,即条件不正确的第一个元素.
是否有一个函数可以获取所有不匹配的对象,加上第一个对应的函数?
例如,给定集合{1, 2, 3, 4, 5, 6, 7, 8},
mySet.MagicTakeWhile(x => x != 5);
Run Code Online (Sandbox Code Playgroud)
=> {1, 2, 3, 4, 5}
Maa*_*ten 13
我想你可以使用SkipWhile,然后选择第一个元素.
var elementThatBrokeIt = data.SkipWhile(x => x.SomeThing).Take(1);
Run Code Online (Sandbox Code Playgroud)
UPDATE
如果需要单个扩展方法,可以使用以下方法:
public static IEnumerable<T> MagicTakeWhile<T>(this IEnumerable<T> data, Func<T, bool> predicate) {
foreach (var item in data) {
yield return item;
if (!predicate(item))
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |