fork download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5.  
  6. public class Test
  7. {
  8.  
  9. public static void Main()
  10. {
  11. var rnd = new Random();
  12. var List1 = new List<string>();
  13. var List2 = new List<string>();
  14. for (int i = 0; i < 100000; i++)
  15. List1.Add(rnd.Next(100000, 1000000).ToString());
  16. for (int i = 0; i < 500000; i++)
  17. List2.Add(rnd.Next(1000000000, int.MaxValue).ToString());
  18.  
  19. var st = new Stopwatch();
  20. st.Start();
  21. var match = from str1 in List1
  22. join str2 in List2
  23. on str1 equals (str2.Length < 6 ? str2 : str2.Substring(0, 6))
  24. select str2;
  25.  
  26. int matchCount = match.Count();
  27. st.Stop();
  28. Console.WriteLine("Elapsed in {0} ms. {1} matches found",st.Elapsed.TotalMilliseconds,matchCount);
  29. }
  30. }
  31.  
  32.  
  33.  
Success #stdin #stdout 0.95s 93888KB
stdin
Standard input is empty
stdout
Elapsed in 608.5003 ms. 55787 matches found