我想创建一个包含数组索引的数组.假设我有一个这样的数组:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Run Code Online (Sandbox Code Playgroud)
我从查询中得到的结果如下:
这意味着地方1,3, 4(LengthUnit= 2)和7忙碌(已经采取).所以,数组现在看起来像:
| T | 2 | T | T | 5 | 6 | T | 8 | 9 | 10 |
Run Code Online (Sandbox Code Playgroud)
在哪里,T代表采取.
如何使用查询结果创建两个整数数组,如下所示:
int[] taken = { 1, 3, 4, 7 };
int[] notTaken = { 2, 5, 6, 8, 9, 10 };
Run Code Online (Sandbox Code Playgroud)
Enumerable.Range 证明在这种情况下有用:
Dictionary<int, int> startAndLength = new Dictionary<int, int>()
{ { 1, 1 }, { 3, 2 }, { 7, 1 } };
int[] taken = startAndLength
.SelectMany(kvp => Enumerable.Range(kvp.Key, kvp.Value)).ToArray();
int[] notTaken = Enumerable.Range(0, 10).Except(taken).ToArray();
Run Code Online (Sandbox Code Playgroud)
开始创建一组开始和长度,然后使用确定所拍摄的项目Enumerable.Range.然后Enumerable.Range再次使用以确定未拍摄的项目.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |