1

これはコードです:

_fts = new List<int>();
                    for (int i = 0; i < LR.Count; i++)
                    {
                        _fts.Add(LR[i].start);
                        _fts.Add(LR[i].end);
                    }

最後に、_fts には、たとえば最初の 4 つのインデックスなど、15 個の数字があります。

[0] 88
[1] 96
[2] 93
[3] 100

追加を行う前に、次のことを行う必要があります。

たとえば、終了は 96 で開始は 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 の番号が 2 回表示されても問題ありません。リストを解析してディレクトリに配置するので、この方法が必要です。ディレクトリのこの部分は気にしないでください。

各カップルの間に数字を追加する必要があるもの。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 に答える