这是代码:
_fts = new List<int>();
for (int i = 0; i < LR.Count; i++)
{
_fts.Add(LR[i].start);
_fts.Add(LR[i].end);
}
最后_fts有例如15个数字,例如前4个索引:
[0] 88
[1] 96
[2] 93
[3] 100
我需要在添加之前添加:_fts.Add 我需要以某种方式计算每两对夫妇的开始和结束,并获得数字,并将所有这些数字添加到_fts。
例如end是96并且开始88所以我需要向_fts添加数字:
88 89 90 91 92 93 94 95 96
然后结束是100并且开始是93所以再次添加到_fts数字:
93 94 95 96 97 98 99 100
所以现在_fts看起来像:
88 89 90 91 92 93 94 95 96 93 94 95 96 97 98 99 100
如果例如93和94的数字出现两次就可以了,我就这样需要它,因为在它之后我解析了List并将它放在目录中......不要介意这部分与目录。
我需要在每对夫妇之间添加数字。而且不仅要添加88和96或93和100.
我该怎么做?
答案 0 :(得分:2)
喜欢这个吗?
for (int j = LR[i].start; j <= LR[i].end; j++)
{
_fts.Add(j);
}
答案 1 :(得分:0)
假设LR是一个可枚举的集合,您可以将其简化为:
var _fts = LR.SelectMany( lr => Enumerable.Range(lr.start, lr.end-lr.start+1) );
如果您想消除重复项,请在语句中添加.Distinct()
。
答案 2 :(得分:0)
对每个范围使用Enumerable.Range
。它需要起始编号和计数,因此您需要计算计数。
var LR = new []
{
new {start = 88, end = 96},
new {start = 93, end = 100}
};
var _fts = new List<int>();
for (int i = 0; i < LR.Length; i++)
{
_fts.AddRange(Enumerable.Range(LR[i].start, LR[i].end - LR[i].start + 1));
}
Console.WriteLine(String.Join(" ", _fts));