我正在解析数据集并将值分配给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;
为什么要添加重复项?
答案 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
,而不必担心重复项。