Точное исключение: «System.Data.MissingPrimaryKeyException», возникшее в System.Data.dll
Дополнительная информация: Таблица не имеет первичного ключа.
Однако я установилпервичный ключ.Это код.Благодарю.
DataColumn[] PrimaryKeyColumns; //Global DataTable firstLinesDT = new DataTable(); column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "FirstLines"; column.Unique = true; firstLinesDT.Columns.Add(column); PrimaryKeyColumns = new DataColumn[1]; PrimaryKeyColumns[0] = column; firstLinesDT.PrimaryKey = PrimaryKeyColumns; column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "Length"; firstLinesDT.Columns.Add(column); column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "FilePath"; firstLinesDT.Columns.Add(column); **// EXCEPTION THROWN AT FIND OPERATION** DataRow foundRow = firstLinesDT.NewRow(); foundRow = firstLinesDT.Rows.Find(line);
И, согласно msdn, именно так должен быть установлен первичный ключ - http://msdn.microsoft.com/en-us/library/system.data.datatable.primarykey.aspx
Я не знаю, отвечает ли это на ваш вопрос, так как ваш код не содержит DataView, возможно, вы его не указали, поскольку не думали, что это важно в примере.
DataView
Однако, превращая таблицу в DataView, а затем обратно ToTable(), удаляет PrimaryKey.
ToTable()
Я не уверен на 100%, но я полагаю, что вы не добавите первичный ключ, пока не будут установлены все остальные столбцы.
Другими словами, переместите firstLinesDT.PrimaryKey = PrimaryKeyColumns;, чтобы быть после точки, гдеВы добавляете столбец FilePath.
firstLinesDT.PrimaryKey = PrimaryKeyColumns;
FilePath