比较列表并返回c#中的匹配项

Ber*_*oes 5 c# compare list match

比较2个列表并返回匹配的最快和最好的方法是什么.只有一场比赛是可能的.List1包含来自数据库的动态数据.

我现在这样做的方式:

foreach (var item1 in List1)
{
   foreach (var item2 in List2 )
   {
       if(item2 == item1)
       string match = item1;
   }
}
Run Code Online (Sandbox Code Playgroud)

我觉得它可以更快地完成.

Hab*_*bib 13

使用Enumerable.Intersect.

var matchItem = List1.Intersect(List2).First();
Run Code Online (Sandbox Code Playgroud)

不确定当前代码的速度有多快,您可以使用秒表进行测量.但是在你当前的代码中,你应该在找到匹配时打破你的内循环和外循环.就像是:

foreach (var item1 in List1)
{
    string match = null;
    foreach (var item2 in List2)
    {
        if (item2 == item1)
        {
            match = item1;
            break;
        }
    }
    if (match != null)
        break;
}
Run Code Online (Sandbox Code Playgroud)

  • Linq的平均速度会慢一些,因为它会在找到匹配后继续迭代.第二个代码示例将是最快的. (2认同)