C#, DataTable. Как получить Row по «id»?
1 ответов
Если ID - первичный ключ, то MSDN (http://msdn.microsoft.com/ru-ru/library/ydd48eyk.aspx) говорит такое:
private void FindInPrimaryKeyColumn(DataTable table,
long pkValue)
{
// Find the number pkValue in the primary key
// column of the table.
DataRow foundRow = table.Rows.Find(pkValue);
// Print the value of column 1 of the found row.
if(foundRow != null)
Console.WriteLine(foundRow[1]);
}
С поправкой на то, что у тебя вместо "long pkValue" будет "string ID"
С DataTable такой фокус не прокатывает, только через DataView можно провернуть поиск.
DataSet ds = new DataSet();
DataTable dt = new DataTable("Table1");
// создаем колонки
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("val", typeof(string));
// задаем PrimaryKey
dt.PrimaryKey = new DataColumn[] { dt.Columns["id"] };
// тестовые данные
dt.Rows.Add(new object[] {"1","one"});
dt.Rows.Add(new object [] {"2", "two"});
dt.Rows.Add(new object[] { "10", "ten" });
ds.Tables.Add(dt);
// собственно поиск
ds.Tables["Table1"].DefaultView.Sort = "id";
DataRowView [] drv = ds.Tables["Table1"].DefaultView.FindRows(10);