更好地替代C#包含方法

时间:2017-06-16 16:46:17

标签: c# list contains

在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;
    }

如果你能解释一下你的推理,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

不确定性能,您需要提供列表长度的详细信息,可能是冲突的引擎盖等。但您可以使用Linq缩短代码:

return ListA.Union(ListB).ToList();

我想在尝试任意提高性能之前证明存在性能问题,而不是使代码可读性降低。