Найдите повторяющиеся записи в столбце и проиндексируйте его числами

#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 раза в каком-либо другом месте. итак, важность