私はいくつかの列を持つリストを持っています。 Column1 = "AA"のときにブロックのIDを作成する必要があります。前のブロックにIDが含まれている場合は、ID + 1が必要です。フィールドに基づいてリストにIDのブロックを作成する
私はこのようなものがあります:
Column0|Column1|
23|AA
23|AA
23|AX
23|AX
23|AX
23|AA
23|AA
23|AX
23|AA
をそして、私はこのような何かが必要です。別の言葉で
Column0|Column1|Column2
23|AA|1
23|AA|1
23|AX|
23|AX|
23|AX|
23|AA|2
23|AA|2
23|AX|
23|AA|3
を、私は(配列に。)のIDを作成したいという情報のブロックを識別するためにColumn1 = AAを含みます。
サイドノート:リストからの注文は、すでに私が必要だったものです。
私はforeachまたはforループを使用する必要がありますか?
(_gDataIDは私のリストです;列の型には私のAAやAXが含まれています...; SeqNumberOfTempCycleは「IDブロック」で設定したい列です)私の考えを適用しようとすると混乱しています。
int lastseq = 0;
for (int i = 0; i < _gDataID.Count; i++)
{
if (_gDataID[i].Type.ToString() == "AA")
{
//Does the previous columns has a seq?
if (_gDataID[i-1].SeqNumberOfTempCycle.ToString() == null)
{
_gDataID[i].SeqNumberOfTempCycle = lastseq + 1;
lastseq = lastseq + 1;
}
else
{
_gDataID[i].SeqNumberOfTempCycle = lastseq;
}
}
}
私のアイデアはうまくいきません。まず、私はこれを行うことはできません:
_gDataID[i].SeqNumberOfTempCycle = lastseq + 1;
私のforループはルーピングではなく、フィールドを正しく設定しています。
あなたは、リストを反復処理し、文字列の現在のseqnumberを保つことができる(例えば、「AA」)と、新しいブロックに遭遇するたびに、あなたがのために現在のseqnumberをインクリメント対応する文字列。 – user2971569