首页 / C# / c# tolist() 浅析
c# tolist() 浅析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# tolist() 浅析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2041字,纯文字阅读大概需要3分钟。
内容图文
在介绍tolist()的时候我先个大家介绍一下linq的延迟加载:
1 var products = new List<Product> 2 { 3new Product { Name = "CD Player", Id = 1, Category = "Electronics" }, 4new Product { Name = "DVD Player", Id = 2, Category = "Electronics" }, 5new Product { Name = "Blu-Ray Player", Id = 3, Category = "Electronics" }, 6new Product { Name = "LCD TV", Id = 4, Category = "Electronics" }, 7new Product { Name = "Wiper Fluid", Id = 5, Category = "Automotive" }, 8new Product { Name = "LED TV", Id = 6, Category = "Electronics" }, 9new Product { Name = "VHS Player", Id = 7, Category = "Electronics" }, 10new Product { Name = "Mud Flaps", Id = 8, Category = "Automotive" }, 11new Product { Name = "Plasma TV", Id = 9, Category = "Electronics" }, 12new Product { Name = "Washer", Id = 10, Category = "Appliances" }, 13new Product { Name = "Stove", Id = 11, Category = "Electronics" }, 14new Product { Name = "Dryer", Id = 12, Category = "Electronics" }, 15new Product { Name = "Cup Holder", Id = 13, Category = "Automotive" }, 16 }; 1718// select all electronics, there are 7 of them19 IEnumerable<Product> electronicProducts = products.Where(p => p.Category == "Electronics"); 2021// now clear the original list we queried22 products.Clear(); 2324// now iterate over those electronics we selected first25 Console.WriteLine(electronicProducts.Count());
许多扩展方法(包括Where() )的查询结果是创建一个迭代器通过移动列表来执行查询。 因此,此时的electronicProducts不是List<Product>,只是IEnumerable<Product>,它会在您使用这个列表时动态求值. 这就是LINQ中强大的延迟执行,在你需要结果前,都不会对表达式求值。 此时我们可以去查询electronicProducts,这样我们就可以得到结果列表!
但是如果我们换一种写法这个值就会是7:
1 var electronicProducts = products.Where(p => p.Category == "Electronics").ToList();
现在, List<T>代替 electronicProducts 作为IEnumerable<T> 动态执行的原始集合,这将是另一个新的集合,修改不会影响原来的集合。
当然,这有优点也有缺点。 通常,如果你只是要遍历的结果和过程,你不需要(也不想)将它存储在一个单独的列表,这只会浪费内存,后来还需要垃圾收集。 然而,如果你想保存子集,并将它分配给另一个类,ToList()是非常方便的,你不需要担心改变原来的集合。
ToList()内存消耗
tolist和lazy load是对立的 ,tolist是直接将linq语句的执行结果放于list集合中,直接将结果存放在内存中,所以数据量大的时候,使用tolist要谨慎。
原文:http://www.cnblogs.com/HKKD/p/7262424.html
内容总结
以上是互联网集市为您收集整理的c# tolist() 浅析全部内容,希望文章能够帮你解决c# tolist() 浅析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。