#vb.net
#vb.net
Вопрос:
У меня есть таблица данных (скажем, dt), в которой есть пять столбцов, скажем (A, B, C, D, E), все они строкового типа, теперь я включаю 6-й столбец F, в котором нет ничего, кроме конкатенации A B C D.
почему я это делаю? потому что он служит уникальным ключом для каждой строки.
Теперь иногда может случиться так, что A B C D одной строки будет равно тому же в другой строке. в этом случае я должен назвать это как A B C D_1. если это произойдет снова, то _2.
Теперь самое сложное ,
эта инкрементная логика _1, _2 не является общей для всей таблицы. он основан на значении E столбца.
т. Е., другими словами, значение, скажем, «Val1», может отображаться в 10 строках таблицы данных в столбце E. эти 10 строк для меня являются фрагментом. при необходимости вышеупомянутое добавление индекса должно происходить только в этих 10 значениях. а затем индекс / счетчик сбрасывается.
допустим, есть еще 10 строк, имеющих значение «Val2» для столбца E . теперь я снова создам уникальный ключ, как упоминалось выше, но любое добавление индекса должно начинаться снова с «_1»
что я пробовал до сих пор? Поскольку dt уже отсортирован / упорядочен по столбцу E
for all unique value uv at column E in dt
{
temnpdt = dt. select("E='uv'").copydatatable
for all rows in tempdt
{
make a string array of all A B C D (Temp array)
}
**do something with this array and change the append the index where ever it is needed**
//unsure how to do the above thing///
}
Комментарии:
1. Зачем тратить все эти усилия? Просто добавьте поле auto inc integer для вашего уникального ключа
2. Я должен согласиться с Херси. Просто используйте суррогатный ключ, например, идентификатор в SQL Server или автономер в Access. Очень редко я использую что-либо еще для первичных ключей. Вы всегда можете применить индекс к этим пяти столбцам, если хотите ускорить поиск, и любая другая логика может быть применена в точке запроса.
3. Выглядит как странная смесь C # и vb.net .
4. .net предоставляет идентификатор GUID. Глобально уникальный идентификатор, если вы не можете изменить таблицу базы данных, как указано выше.
5. хорошо, добавление плоского целого числа в конце может быть не лучшим решением. потому что цель целого числа — просто не создавать уникальный ключ. когда уникальный ключ имеет значение _3, мне пришлось бы искать уникальный ключ 3 раза в каком-либо другом месте. итак, важность