在C#中使用Contains方法有更快的替代方法吗?
这是一个看起来像我试图做的样本,但我已经读到Contains是一种昂贵的方法,我希望找到一个更好的选择,因为速度很重要。
public List<Guid> getCumulativeListByUsername(string username)
{
List<Guid> CombinedList = new List<Guid>();
List<Guid> ListA = new List<Guid>();
List<Guid> ListB = new List<Guid>();
ListA = getListAFromDatabase(username);
ListB = getListBFromDatabase(username);
CombinedList = ListA;
foreach (Guid x in ListB)
{
if (!CombinedList.Contains(x))
{
CombinedList.Add(x);
}
}
return CombinedList;
}
如果你能解释一下你的推理,我们将不胜感激。
答案 0 :(得分:1)
不确定性能,您需要提供列表长度的详细信息,可能是冲突的引擎盖等。但您可以使用Linq缩短代码:
return ListA.Union(ListB).ToList();
我想在尝试任意提高性能之前证明存在性能问题,而不是使代码可读性降低。