Получить строку рядом со строкой, полученной с помощью DataTable.Select()

У меня есть объект DataTable со следующими данными:

Id Value
1   val1
3   val2
2   val3

Я выбираю одну строку следующим образом:

 table.Select("Id=1");

Этот запрос дает мне строку

 1 val1

И затем я хочу взять строку рядом с выбранной, т.е. строку

 3 val2

Могу ли я сделать это как-то? Является ли это возможным? Может быть, есть что-то вроде позиции строки в таблице, которую я могу использовать для выбора следующей строки, увеличивая это значение?


person Ksice    schedule 12.04.2012    source источник


Ответы (1)


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
Content 4

надеюсь, это поможет

person Baz1nga    schedule 12.04.2012