从TStringList中删除重复项

时间:2013-07-16 08:47:25

标签: delphi 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 个答案:

答案 0 :(得分:25)

您的确阅读了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;

答案 1 :(得分:8)

开箱即用,尽量避免重复使用?

我不知道您使用的是什么数据库,但例如在SQL服务器上,这只是查询问题:

'SELECT DISTINCT CHANNEL_INT FROM MYTABLE';

然后您可以将结果添加到TStringList,而不必担心重复项。