Where方法如何运行?

Old*_*zer 2 c# linq lambda

我的代码是:

using System;
using System.Linq;
using System.Collections.Generic;

public class D {
   public string Value { get; set; }
   public D(string v) { this.Value = v; }
}
public class Program
{
   public static void Main()
   {
       List<D> DD = new List<D>();
       DD.Add(new D("2018-11-08"));
       DD.Add(new D("2018-12-01"));
       var dd = DD.Where(d=> { 
          Console.WriteLine($"In predicate: {d.Value}"); 
          return d.Value=="2018-12-01"; 
       });

       var dl = dd.ToList();
       foreach (var d in dl) {
         Console.WriteLine($"Final: {d.Value}");
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

In predicate: 2018-11-08
In predicate: 2018-12-01
Final: 2018-12-01
Run Code Online (Sandbox Code Playgroud)

如果DD包含100万个元素,那么lambda会DD.Where执行100万次吗?

如果DDSQL Server中的表是什么?

Ous*_* D. 6

如果DD包含100万个元素,那么DD中的lambda会执行100万次吗?

答案取决于急切的操作.在这种特殊情况下是的,因为急切的操作ToList只是说First(),Any()它会在找到符合标准的元素时立即短路.