我需要从源序列中提取所有负序子.例如,我有:
{-2,-2,5,9,1,-6,-7,-2,5,11,-2}
在结果中我想得到这些序列:
{-2,-2},{ - 6,-7,-2}和{-2}
是否可以使用LINQ解决任务?
您可以使用键变量来区分哪些是负数.
var list = new[] { -2, -2, 5, 9, 1, -6, -7, -2, 5, 11, -2 };
var key = 1;
var arr = list.Select(x => new { x, key = x < 0 ? key : (key++ * 0) })
.Where(x => x.key > 0)
.GroupBy(x => x.key)
.Select(g => g.Select(x => x.x).ToArray())
.ToArray();
Run Code Online (Sandbox Code Playgroud)
如果没有Where,GroupBy并且Select,其结果将是这样的:

然后我们只需要只取正键,按键分组,只取值.
产量
{ -2, -2 }
{ -6, -7, -2 }
{ -2 }
Run Code Online (Sandbox Code Playgroud)