LINQ横向对比foreach方法

开发 后端
LINQ已经全面光临了,本文并非探讨LINQ的是是非非,而是通过自己开发过程的一个小小的侧面来展示,LINQ已经来了,而且更美好。

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查询非泛型类型
责任编辑:彭凡 来源: cnblogs
相关推荐

2009-09-22 09:31:08

LINQ to SQL

2009-09-08 11:25:42

Linq foreac

2009-09-18 17:17:58

LINQ模型

2009-04-01 13:26:08

JavaFXFlexSilverlight

2009-09-10 17:44:36

DOM模型INQ模型

2009-09-14 16:41:23

LINQ To XML

2009-09-09 13:18:26

Linq Submit

2010-07-29 09:18:25

JavaFXFlexSilverlight

2009-12-17 09:06:23

Visual Stud

2009-07-10 16:17:41

JVM 1.6

2010-09-27 16:07:06

JVM Server模Client模式

2009-09-09 09:59:08

Linq调用LoadP

2010-06-17 09:30:44

LINQ to SQL

2010-09-14 13:34:03

2010-01-21 09:15:05

Linux嵌入式文件系

2009-03-17 08:59:35

Windows 7云计算Visual Stud

2009-09-11 10:20:36

Linq扩展方法

2009-09-17 11:29:50

Linq扩展方法

2009-09-15 16:44:44

Linq排序

2009-09-10 16:32:19

LINQ Where
点赞
收藏

51CTO技术栈公众号