最快的方式交叉检查2列表与彼此

时间:2017-12-19 12:22:45

标签: c# arrays list arraylist

检查list2中的字符串值是否存在于list2中最有效的方法是什么?

伪代码示例

StringList List1 = {"a", "b", "c", "d"};
StringList List2 = {"d", "c", "b", "a"};

foreach (string a in List1)
{
    foreach (string b in List2)
    {
        if(a==b)
        {
             WriteLine("match");
        }
    }
} 

这种方法太慢而不是最佳解决方案,我使用的平台是BI#,C#的衍生产品。当前库中不存在Array.Exists。

3 个答案:

答案 0 :(得分:3)

您可以使用Intersect

var allIntersections = List1.Intersect(List2);

foreach(string match in allIntersections)
   Console.WriteLine(match);

如果您只是想知道是否至少有一个相交:

bool anyExist = allIntersections.Any(); 

答案 1 :(得分:0)

将List转换为逗号分隔字符串,允许使用标准InString函数,在这种情况下称为StringContains;

 foreach (string a in List1)
{
    if(StringContains(a, NewString))
    {
        WriteLine("Match");
    }
} 

答案 2 :(得分:0)

bool flag= list2.Except(list1).Any();

如果list1不包含list2中的所有内容,则为true。