Удаление дубликатов из TStringList
Я анализирую набор данных и присваиваю значения TStringList
Я хочу избежать дублирования. Я использую следующий код, но все еще вставляются дубликаты.
channelList := TStringList.Create;
channelList.Duplicates := dupIgnore;
try
dataset.First;
while not dataset.EOF do
begin
channelList.Add(dataset.FieldByName('CHANNEL_INT').AsString) ;
dataset.Next;
end;
почему добавлены дубликаты?
2 ответов
вы читали http://docwiki.embarcadero.com/Libraries/XE2/en/System.Classes.TStringList.Duplicates, не так ли ?
тогда вы пропустили самое повторяющееся слово там - "сортировка"
channelList.Sorted := true
var F: TField;
channelList := TStringList.Create;
channelList.Sorted := True;
channelList.Duplicates := dupIgnore;
try
dataset.First;
F := dataset.FieldByName('CHANNEL_INT');
while not dataset.EOF do
begin
channelList.Add(F.AsString);
dataset.Next;
end;
думать из коробки и избегать дубликатов спереди?
Я не знаю, какую БД вы используете, но, например, на SQL server это просто вопрос запроса:
'SELECT DISTINCT CHANNEL_INT FROM MYTABLE';
и затем вы можете добавить результаты TStringList
не беспокоясь о дубликатах.