LINQ横向对比foreach方法
创始人
2024-03-27 09:31:19
0

1 引言

今天,Terry点敲了我对于一段代码的处理,诚如本文标题所言,事件缘起于我对一个List转换的小小处理。首先来看看,这个List转换双方的本来面目,以一个常见的User类为例而言,User类代表了Model层的实体类,其定义为:

    // Release : code10, 2009/05/06
   // Author  : Anytao, http://www.51cto.com    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.51cto.com    
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.51cto.com
        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.51cto.com 
 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作为最重要的循环手段,仍然有着不可替代的作用,不容忽视。

【编辑推荐】

  1. C#中foreach基础使用方法
  2. 浅谈LINQ如何插入删除和更新数据库记录备注
  3. 使用LINQ查询非泛型类型

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...