抛弃传统,用委托、Lambda、Linq 取 List 中的项

假如我们有一个列表

要查找 CountyId == 2 对应的 County,方法有很多。

一、最传统方法:

二、稍微简单点的方法:

三、直接委托的写法:

真正简单的方法来了。

  • 如果不存在,返回 null。
  • 如果有多个,返回第 1 个。

四、我们也可以换成 Lambda 表达式,更简洁:

这种方式也是委托写法,只是所用的表达式语法不同:一个是传统语法,一个是 Lambda 语法。

  • 上面两种写法都可以,第一种适用于长代码,第二种适用于短代码。
  • 如果不存在,返回 null。注意,我们这个是类才是这样,如果是 List<int> 则找不到返回 0,如果是 List<int?> 则找不到返回 null,如果是 List<DateTime> 则找不到返回 0001-01-01 日期。可以参见:http://www.benshu.com/c/2010/12/HWCB70F26T40L25P.asp
  • 如果有多个,返回第 1 个。

五、Linq 写法:

关于 Linq:

  • 一是要用 var。
  • 二是 from 中有个 in。
  • 三是 where 中是 C# 表达式(不是 SQL)。
  • 四是 select 在最后。

Linq 写法在当前需求中并不简洁,但是它可以实现更复杂的功能。

相关阅读

  • LINQ to SQL 学习笔记
  • 用 LINQ 快速把一个列表类中的 id 取出来

你可能感兴趣的