Linq-延迟查询

来源:互联网 发布:mac怎么给ps安装字体 编辑:程序博客网 时间:2024/05/16 16:56

Linq延迟查询

/// <summary>/// 延迟查询/// </summary>public void DelayedQuery(){    var names = new List<string> { "Jack", "Nick", "Spartan" };    var nameWithS = (from name in names                     where name.StartsWith("S")                     orderby name                     select name);    Console.WriteLine("First Demo:");    foreach (string name in nameWithS)    {        Console.WriteLine(name);//Result:Spartan    }    Console.WriteLine();    names.Add("John");    names.Add("Jim");    names.Add("Steven");    Console.WriteLine("Second Demo:");    foreach (string name in nameWithS)    {        Console.WriteLine(name);//Result:Spartan,Steven    }    /*     *由这俩个不同结果可见只有在枚举nameWithS的时候才会真正的执行查询操作。     * 如果没有延迟查询, 两次输出的结果应该是相同的。     */}/// <summary>/// 避免延迟查询/// </summary>public void AvoidDelayedQuery(){    var names = new List<string> { "Jack", "Nick", "Spartan" };    var nameWithS = (from name in names                     where name.StartsWith("S")                     orderby name                     select name).ToList();    Console.WriteLine("First Demo:");    foreach (string name in nameWithS)    {        Console.WriteLine(name);//Result:Spartan    }    Console.WriteLine();    names.Add("John");    names.Add("Jim");    names.Add("Steven");    Console.WriteLine("Second Demo:");    foreach (string name in nameWithS)    {        Console.WriteLine(name);//Result:Spartan,Steven    }    /*     *可以使用一个不返回IEnumerable<T>数据类型的转换操作符,      * 如ToArray, ToList, ToDictionary或ToLookup     */}
0 0
原创粉丝点击