如何将List <int>添加到两者之间的数字?</int>

时间:2013-02-03 01:49:37

标签: c#

这是代码:

_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.

我该怎么做?

3 个答案:

答案 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));