标签:linq扩展方法 first firstordefault last lastordefault take skip where select
1 使用First()/FirstOrDefault()、Last()/LastOrDefault()方法返回序列中的第一个或者最后一个元素时,应该确保序列已经被正确排序。
int[] numbers = { 3, 1, 23, 10, 5, 12, 7, 2, 4}; int first = numbers.First(); //输出3 int firstOrdered = numbers.OrderBy(it => it).First();//输出1从示例代码可以看出,对未正确排序的序列使用First()/FirstOrDefault()、Last()/LastOrDefault()方法将无法返回自己想要的结果。
2 了解方法First()与FirstOrDefault()、方法Last()与LastOrDefault()之间的区别
FirstOrDefault()与First()方法都可以返回序列中的第一个元素。两者的区别是:如果序列中不包含任何元素,FirstOrDefault()会返回默认值,而First()方法将会引发异常。Last()与LastOrDefault()方法之间的区别与FirstOrDefault()与First()方法之间的区别相同。
int[] numbers = { 3, 1, 23, 10, 5, 12, 7, 2, 4}; int first = numbers.First(it=>it == 30);//会产生异常 int firstOrDefault = numbers.FirstOrDefault(it => it == 30);//返回0
3 使用Where()+First()/FirstOrDefault()的某些场合可以只用First()/FirstOrDefault()来实现
我们可以使用Where()方法来筛选序列,再使用First()/FirstOrDefault()方法返回筛选后的序列中的第一个元素,其实这样的操作我们完全可以使用First()/FirstOrDefault()方法来实现。因为First()/FirstOrDefault()方法提供的重载形式First<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)/FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)可以返回序列中满足条件的第一个元素。(Where()+Last()/LastOrDefault()--Last()/LastOrDefault()类似)
int[] numbers = { 3, 1, 23, 10, 5, 12, 7, 2, 4}; int first1 = numbers.Where(it => it > 5).First(); //返回23 int first2 = numbers.First(it => it > 5);//返回23
4 了解Where()方法与Select()方法的区别
Select()方法可以将序列中的每个元素投影到新表中,结果为一个新的集合。而Where()方法仅基于谓词筛选序列,结果为源序列的一个子集。
int[] numbers = { 3, 1, 23, 10, 5, 12, 7, 2, 4}; var where = numbers.Where(it => it > 5).ToList(); //返回23, 10, 12, 7 var query = numbers.Select(it => it * it).ToList(); //返回9, 1, 529, 100, 25, 144, 49, 4, 14
5 两次OrderBy()与OrderBy()+ThenBy()的结果并不一样
请参考文章《排序操作中的小陷阱》。
6 了解Take()与Skip()方法的区别
请参考文章《例说Linq中Take与Skip的使用》。
7 使用Contains方法判断集合中是否包含有某些元素
int[] numbers = { 3, 1, 23, 10, 5, 12, 7, 2, 4}; int[] conditions = { 1, 10, 4, 68 }; var results = numbers.Where(it => conditions.Contains(it)).ToList(); //返回1, 4, 10
关于Linq使用过程中遇见的一些小问题的总结,布布扣,bubuko.com
标签:linq扩展方法 first firstordefault last lastordefault take skip where select
原文地址:http://blog.csdn.net/yl2isoft/article/details/26162317