C#contains方法的更好替代方法

C#contains方法的更好替代方法,c#,list,contains,C#,List,Contains,有没有比在C#中使用Contains方法更快的替代方法 这是一个样本,看起来像我正在尝试做的,但我已经读到,包含是一个昂贵的方式来做它,我想找到一个更好的选择,因为速度是重要的 public List<Guid> getCumulativeListByUsername(string username) { List<Guid> CombinedList = new List<Guid>(); List<Gu

有没有比在C#中使用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;
    }
public List getCumulativeListByUsername(字符串用户名)
{
List CombinedList=新列表();
List ListA=新列表();
List ListB=新列表();
ListA=getListAFromDatabase(用户名);
ListB=getListBFromDatabase(用户名);
CombinedList=ListA;
foreach(列表B中的Guid x)
{
如果(!CombinedList.Contains(x))
{
组合列表。添加(x);
}
}
返回组合列表;
}

如果您也能解释您的推理,我们将不胜感激。

对于性能没有把握,您需要提供列表长度、可能发生冲突的情况等详细信息。但您可以使用Linq缩短代码:

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

在尝试任意提高性能之前,我想证明存在性能问题,这很可能会降低代码的可读性。

“我已经读到,使用包含的方法是一种昂贵的方法”-您在实践中注意到了吗?你在哪里读到的,他们提供了替代方案吗?如果没有,你的研究表明了什么?事实上,这个问题的答案是使用哈希集或字典,我肯定你也读过了?你是否遇到了任何实际的性能问题?如果你从一个数据库中提取两个列表,或者在其中合并,那么数据库擅长设置操作。为什么不
Intersect
?voteup,但你不需要在那里进行区分,工会做这件事inside@gabba“voteup”-为什么?并不是说我否决了这个答案,但它并没有包含任何解释,也没有证明这比OP的代码快。问题不在于缩短代码(这是答案所提供的),而在于提高性能(这并不能证明)。大多数情况下,Linq比直接迭代要慢。@CodeCaster,导致它的可读性更强,解决方案更简短answer@gabba这不是问题的目的。