2012-04-12 2 views
1

У меня есть DataTable объект со следующими данными:Получить строку рядом строку получила с DataTable.Select()

Id Value 
1 val1 
3 val2 
2 val3 

Я выбрать одну строку следующего способ:

table.Select("Id=1"); 

Этот запрос дает мне грести

1 val1 

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

3 val2 

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

ответ

4

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

Надеюсь, что поможет

Смежные вопросы