2

次のデータを持つ DataTable オブジェクトがあります。

Id Value
1   val1
3   val2
2   val3

次の方法で1行を選択しています:

 table.Select("Id=1");

このクエリは私に行を与えます

 1 val1

次に、選択した行の次の行、つまり行を取得したい

 3 val2

どうにかしてこれを行うことはできますか?出来ますか?この値をインクリメントして次の行を選択するために使用できる、テーブル内の行の位置のようなものがあるでしょうか?

4

1 に答える 1

5

DataTable.Rows.IndexOf() 私が考えることができる唯一のものです。

どのように:

var rows=table.Select("Id=1");
var indexOfRow=table.Rows.IndexOf(rows[0]); //since Id only 1 match

var nextRow=table.Rows[indexOfRow+1];

例:

    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof (int));
    dt.Columns.Add("AnotherID", typeof(int));
    dt.Columns.Add("Content", typeof(string));
    dt.PrimaryKey = new[] {dt.Columns["ID"]};

    // Add some data
    dt.Rows.Add(1, 10, "1");
    dt.Rows.Add(2, 11, "2");
    dt.Rows.Add(3, 12, "3");
    dt.Rows.Add(4, 13, "4");

    var index = dt.Rows.IndexOf(dt.Rows.Find(3));

    // index is 2

    Console.WriteLine(dt.Rows[index+1]);

Linqpad での出力

DataRow
ID 4
AnotherID 13
コンテンツ 4

それが役立つことを願っています

于 2012-04-12T10:28:08.840 に答える