从循环中创建唯一字符串列表的最快方法?

Bor*_*ens 5 .net c# optimization

我有一组字符串(~80 000)我只能通过hits.Doc(int).Get("fieldName")方法顺序访问.

List<string> idStrings = new List<string>();
int count = hits.Length();
for (int i = 0; i < count; i++)
{
    string idString = hits.Doc(i).Get("id");
    if (!idStrings.Contains(idString))
        idStrings.Add(idString);
}
Run Code Online (Sandbox Code Playgroud)

稍后的字符串必须是int.TryParse()'d.我认为应该有更快的方法来做到这一点.有什么建议?

ybo*_*ybo 13

首先,使用一个Hashset<string>而不是一个列表,Contains方法会更快:

int count = hits.Length();
Hashset<string> idStrings = new Hashset<string>();
Run Code Online (Sandbox Code Playgroud)

编辑:如果您使用Hashset,则不必调用"Contains",因为它不能包含重复项.只需使用添加,它将自动删除重复的值.