Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>>,按说JObject类型的对象是可以直接调用Select、Where等linq扩展方法的,但偏偏就是不行,代码如下:

using System.Linq;
...
var jobj = new JObject();
var xxx = jobj.Select(x=>x); //报错:JObject未包含Select定义,也不存在第1个参数为JObject的Select扩展方法...
foreach(var x in jobj) { } //可以
var xxx = ((IEnumerable<KeyValuePair<string, JTokin>>)jobj).Select(x=>x); //也可以

究竟是人性的扭曲还是道德的沦丧?答案就在:

因为JObject除了本身实现了一个IEnumerable<KeyValuePair<string, JToken>>,它实现的另一个接口JContainer也实现了一个IEnumerable<JToken>,等于JObject直接和间接实现了两个不同的IEnumerable<T>,当.Select的时候编译器不能确定调用哪个类型的Select,所以就这样了。——爆栈

最新文章

  1. ssh链接数设置问题
  2. IO调度器(二) IO的中断返回
  3. unresolved refrence &#39;execfile&#39;……
  4. 3,SFDC 管理员篇 - 区域划分
  5. SqlServer2008R2附件数据库失败
  6. thinkphp 3.23 第三方登录sdk集成包
  7. (转)Sqlite中INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
  8. SQL操作(增删改查)
  9. [zz]npm安装错误解决方法
  10. cocos2dx 随机函数
  11. TeamTalk安装测试
  12. 7系列高速收发器总结 GTP IP核使用篇
  13. Python之面向对象三
  14. 文本处理三剑客之awk(No.1)
  15. Error: listen EADDRINUSE :::3000
  16. [python]目录及文件操作
  17. Plugin with id &#39;com.novoda.bintray-release&#39; not found.的解决方案
  18. JS event loop
  19. UINavigationController与UITabBarController相关问题
  20. OpenCV---图像直方图

热门文章

  1. spring常用的注解
  2. Leetcode 335.路径交叉
  3. 九度oj 题目1022:游船出租
  4. php文档php-fpm.conf配置
  5. iOS控件-3级城市列表-plist版
  6. 【bzoj3956】Count 单调栈+可持久化线段树
  7. 【Luogu】P3381最小费用最大流模板(SPFA找增广路)
  8. 算法复习——splay(bzoj3224)
  9. poj1717 Dominoes (背包)
  10. C++ string 类中的 assign()函数