还在用双层for循环优化
List<Person> list1 = new();
List<Person> list2 = new();
for (int i = 0; i < 10_0000; i++)
{
list1.Add(new Person() { PersonId = i});
list2.Add(new Person() { PersonId = i });
}
Stopwatch stopwatch = Stopwatch.StartNew();
test1(list1, list2);
stopwatch.Stop();
Console.WriteLine("for循环耗时:" + stopwatch.ElapsedMilliseconds);
Stopwatch stopwatch1 = Stopwatch.StartNew();
var intersectList = list1.Intersect(list2).ToList();
stopwatch1.Stop();
Console.WriteLine("Intersect循环耗时:" + stopwatch1.ElapsedMilliseconds);
Person.cs类
private static void test1(List<Person> list1, List<Person> list2) { foreach (Person before in list1) { foreach (Person after in list2) { if (before.PersonId.Equals(after.PersonId)) { //TODO 业务逻辑 break; } } } } public class Person { public int PersonId { get; set; } }