1

这是代码:

_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 并且 start 88 所以我需要在 _fts 中添加数字:

88 89 90 91 92 93 94 95 96

然后 end 是 100 并且 start 是 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 的数字出现两次没关系,我需要这种方式,因为在它之后我解析列表并将其放入目录中......不要介意这部分与目录。

我需要在每对夫妇之间添加数字。而不仅仅是添加 88 和 96 或 93 和 100。

我该怎么做 ?

4

3 回答 3

2

像这样?

for (int j = LR[i].start; j <= LR[i].end; j++)
{
    _fts.Add(j);
}
于 2013-02-03T01:51:54.917 回答
0

假设 LR 是一个可枚举的集合,您可以将其简化为:

var _fts = LR.SelectMany( lr => Enumerable.Range(lr.start, lr.end-lr.start+1) );

如果要消除重复项,请添加.Distinct()到语句中。

于 2013-02-03T01:57:09.940 回答
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));
于 2013-02-03T01:57:25.583 回答