可能重复:
How can I search a generic TList for a record with a certain field value?
我有一个
的集合TList<TActivityCategory>
TActivityCategory有一个String类型的Name属性,我想使用Name属性搜索TList。
我在TList中看到BinarySearch&lt;&gt;但这需要一个TActivityCategory实例。我只想传递一个名字的字符串。
我将如何做到这一点?
答案 0 :(得分:2)
坦率地说,考虑到基于比较器的方法所需的所有锅炉板,编写自己的搜索程序可能最简单:
type
TActivityCategoryList = class(TList<TActivityCategory>)
public
function Find(const Name: string): Integer;
end;
function TActivityCategoryList.Find(const Name: string): Integer;
begin
for Result := 0 to Count-1 do
if Self[Result].Name=Name then
exit;
Result := -1;
end;
答案 1 :(得分:1)
如果您没有要搜索的实例,则必须自己进行搜索。有三种基本方法可以做到这一点:
TDictionary<string, TActivityCategory>
。不需要搜索,但您需要编写一些代码来保持两者同步。