次のコードは、をループして、DataTable
特定の条件が満たされた場合に別のコードを作成します。ただし、最初のDataTableの最後の行はスキップされます。
for (int i = 0; i < dt.Rows.Count; i++ )
{
DataRow row = dt.Rows[i];
DataRow nextRow = i < dt.Rows.Count - 1 ? dt.Rows[i + 1] : null;
string account = row[1].ToString();
string nextAccount = "";
if (nextRow != null)
{
nextAccount = nextRow[1].ToString();
}
numberOfItems++;
totalAmount += Convert.ToDecimal(row[2]);
row[4] = "D";
row[5] = c;
row[6] = Sequence;
if (nextRow != null && i < dt.Rows.Count && account != nextAccount)
{
dt2.Rows.Add("N",
c,
row[1],
row[2],
row[3],
numberOfItems,
totalAmount,
Sequence);
numberOfItems = 0;
totalAmount = 0m;
Sequence++;
}
}
上記のコードで、次のようなテーブルがある場合:
abc、1、2、3 abc、1、2、5 def、1、3、6
両方のabcを処理しますが、defは処理しません。
dt2には次のものが含まれている必要があります。
abc、1、2、8、2 def、1、3、6、1
ここで、8はdtの4番目の列の合計であり、2はabc行の数です。
私はこれを取得しているだけです
abc、1、2、8、2