using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { //迭代在查询定义的时候不会进行,而是在执行每个foreach语句时执行 //每次迭代中使用查询时,都会调用扩展方法 Liststrs = new List { "关羽", "张飞", "马超", "黄忠", "赵云" }; var query = from r in strs where r.StartsWith("张")//查找集合中元素匹配第一个的元素 orderby r select r; Foreach(query);//输出:张飞 strs.Add("张昭"); strs.Add("张合"); strs.Add("张辽"); strs.Add("曹操"); Foreach(query);//输出:张飞,张合,张辽,张昭 Console.ReadKey(); //==========================================两次输出不变(值添加到集合里面去了) List strs2 = new List { "关羽", "张飞", "马超", "黄忠", "赵云" }; var query2 = (from r in strs2 where r.StartsWith("张")//查找集合中元素匹配第一个的元素 orderby r select r).ToList();//ToArray() ToEnumerable() Foreach(query2);//输出:张飞 strs2.Add("张昭"); strs2.Add("张合"); strs2.Add("张辽"); strs2.Add("曹操"); Foreach(query2);//输出:张飞 Console.ReadKey(); } static void Foreach(IEnumerable s) { foreach (string item in s) { Console.WriteLine(item); } Console.WriteLine("========================="); } } }