1 引言
创新互联公司专业为企业提供江门网站建设、江门做网站、江门网站设计、江门网站制作等企业网站建设、网页设计与制作、江门企业网站模板建站服务,十年江门做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
今天,Terry点敲了我对于一段代码的处理,诚如本文标题所言,事件缘起于我对一个List 转换的小小处理。首先来看看,这个List 转换双方的本来面目,以一个常见的User类为例而言,User类代表了Model层的实体类,其定义为:
// Release : code10, 2009/05/06 // Author : Anytao, http://www. public class User { public int ID { get; set; } public string FirstName { get; set; } public string SecondName { get; set; } public int Age { get; set; } } |
而Account类,则代码了Business Object层的业务类,其定义为:
// Release : code10, 2009/05/06 // Author : Anytao, http://www. public class Account { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } } |
那么一件重要的事情,就是如何完成二者之间的转换,尤其是,类似于List 到List 这样的转换,是常常发生在业务处理的实际操作中。关于二者的区别,属于设计方面的论题,不是本文关注的对象。
2 本来的实现---想起来就是foreach
好了,典型的List 转换,我们固有思维中想到的就是循环了,所以我想都没想就实现了下面的处理过程:
// Release : code10, 2009/05/06 // Author : Anytao, http://www. public List GetAccounts(List users) { List accounts = new List (); foreach (User item in users) { Account account = new Account(); account.ID = item.ID; account.Name = item.FirstName + item.SecondName; account.Age = item.Age; accounts.Add(account); } return accounts; } |
固有的思维并没有错,程序和处理诚如以往一样值得回味。但是,忘却和前进同样重要,所以我忘了用最简单的办法来更优雅的处理这一操作。
3 改进的方式---LINQ真的来了
LIQN来了,就不要吝啬自己的武器,对于相同的代码需求,优雅和简洁永远是值得追求的感觉,所以值得看似经典的代码,其实还可以更好:
// Release : code10, 2009/05/06 // Author : Anytao, http://www. public List GetAccounts(List users) { var result = from item in users select new Account { ID = item.ID, Name = item.FirstName + item.SecondName, Age = item.Age }; return result.ToList (); } |
改善就这么一点点,以LINQ方式实现的“智能”转换,看起来更美,不是吗。
4 结论
LINQ已经来了,你还等什么。是的,进步只有一点点,作为开发故事中的小小一笔,但是我觉得值得书写。当然,这只是LINQ应用的小小示例,同时foreach作为最重要的循环手段,仍然有着不可替代的作用,不容忽视。
【编辑推荐】
本文题目:LINQ横向对比foreach方法
标题链接:http://www.shufengxianlan.com/qtweb/news21/44871.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联