关于Linq使用过程中遇见的一些小问题的总结
来源:互联网 发布:matlab bp算法 编辑:程序博客网 时间:2024/05/24 23:14
1 使用First()/FirstOrDefault()、Last()/LastOrDefault()方法返回序列中的第一个或者最后一个元素时,应该确保序列已经被正确排序。
int[] numbers = { 3, 1, 23, 10, 5, 12, 7, 2, 4};int first = numbers.First(); //输出3int 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(); //返回23int 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, 7var 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使用过程中遇见的一些小问题的总结
- 工作中遇见的一些问题总结
- NGUI使用过程中遇见的问题
- 关于cloudstack中遇见的一些问题处理笔记
- 关于echart使用过程中遇见过的坑
- 开发过程中 遇到的一些小问题 总结一下
- [总结]使用WPF路由事件过程中遇到的一些小问题
- Yii2使用过程中一些小技巧的总结
- 在VS中使用cocos2d-x遇见的一些问题
- WebView中遇见的一些问题
- 初次使用git遇见的一些问题
- MATLAB使用过程遇见的问题记录
- maven使用过程中遇见的bug_me
- 使用vue过程中遇见的bug
- 关于Listview 使用过程中 的一些问题及 解决方法
- 关于Linq中Lambda的一些基础性问题
- ExpandableListView控件使用中一些小问题的总结
- winHttp库使用过程中总结的若干小问题
- HashSet和TreeSet的相关总结和整理
- 项目启动时报错:Unsupported major.minor version 51.0
- Oracle获取系统时间及格式化
- Karp的21个NPC问题及其规约
- LA 3027 Corporative Network
- 关于Linq使用过程中遇见的一些小问题的总结
- java堆栈获取后缀表达式
- memcached完全剖析–1. memcached的基础
- 2 Xcode5(2)
- ios 常用字符串的操作
- 计算C++程序运行时间总结
- with cube与with rollup
- 采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序(多activity)(转)
- 购票 组合数学