8 ответов:
Создайте строку критериев для поиска, например:
string searchExpression = "ID = 5"Затем используйте метод
.Select()объектаDataTable, например:DataRow[] foundRows = YourDataTable.Select(searchExpression);Теперь вы можете просмотреть результаты следующим образом:
int numberOfCalls; bool result; foreach(DataRow dr in foundRows) { // Get value of Calls here result = Int32.TryParse(dr["Calls"], out numberOfCalls); // Optionally, you can check the result of the attempted try parse here // and do something if you wish if(result) { // Try parse to 32-bit integer worked } else { // Try parse to 32-bit integer failed } }
Вы можете использовать LINQ для DataSet / DataTable
Поскольку каждая строка имеет уникальный идентификатор, вы должны использоватьvar rows = dt.AsEnumerable() .Where(r=> r.Field<int>("ID") == 5);Single/SingleOrDefault, который вызовет исключение, если вы получите несколько записей обратно.DataRow dr = dt.AsEnumerable() .SingleOrDefault(r=> r.Field<int>("ID") == 5);(замените
intтип вашего поля ID)
Я мог бы использовать следующий код. Поблагодарить каждого.
int intID = 5; DataTable Dt = MyFuctions.GetData(); Dt.PrimaryKey = new DataColumn[] { Dt.Columns["ID"] }; DataRow Drw = Dt.Rows.Find(intID); if (Drw != null) Dt.Rows.Remove(Drw);
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5); if (dataRow != null) { // code }Если это типизированный набор данных:
MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5); if (dataRow != null) { // code }
Попробуйте этот код
DataRow foundRow = FinalDt.Rows.Find(Value);Но установить по крайней мере один первичный ключ
Привет просто создайте простую функцию, которая выглядит так, как показано ниже.. Это возвращает все строки, где введенный параметр вызова является допустимым или истинным.
public DataTable SearchRecords(string Col1, DataTable RecordDT_, int KeyWORD) { TempTable = RecordDT_; DataView DV = new DataView(TempTable); DV.RowFilter = string.Format(string.Format("Convert({0},'System.String')",Col1) + " LIKE '{0}'", KeyWORD); return DV.ToTable(); }И просто назовите его, как показано ниже;
DataTable RowsFound=SearchRecords("IdColumn", OriginalTable,5);Где 5-идентификатор. Спасибо..
Старайтесь избегать ненужных петель и идите на это, если это необходимо.
string SearchByColumn = "ColumnName=" + value; DataRow[] hasRows = currentDataTable.Select(SearchByColumn); if (hasRows.Length == 0) { //your logic goes here } else { //your logic goes here }Если вы хотите выполнить поиск по определенному идентификатору, то в таблице должен быть первичный ключ.
Comments