NET问答: 如何在 dynamic 集合上使用 Linq ?

咨询区

  • user1618825

有没有一种方式可以将 dynamic 对象转成 可过滤的 IEnumerable 类型对象?比如下面的代码:


dynamic data = JsonConvert.DeserializeObject(response.Content);

然后用Linq去访问


var a = data.Where(p => p.verified == true)

回答区

  • Jon Skeet

只要 data 是某一种 IEnumerable 类型,就可以像下面这样用。


var a = ((IEnumerable) data).Cast<dynamic>().Where(p => p.verified);

这里用 Cast<dynamic>() 的目的就是将 data 转成 IEnumerable<dynamic>,好处在于 lambda 表达式 中的参数也是 动态类型。

  • user3407039

如果可以的话,理想的方式是反序列化时指定好类型,这样就可以避免后期再 Cast,比如下面的代码:


dynamic data = JsonConvert.DeserializeObject(response.Content);

可以改造成


var data = JsonConvert.DeserializeObject<IEnumerable<dynamic>>(response.Content);
  • Varun Nair

这里我提供一些思路可能对你有帮助,用 jsonString 作为 response.Content ,必要的话再在 response 中做迭代过滤。

下面的代码通过 JValue.Parse 来返回 JToken,这里的 JToken 就是 IEnumerable.

string jsonString = "[{\"Question\":{\"QuestionId\":49,\"QuestionText\":\"Whats your name?\",\"Answer\":\"xyz\"}},{\"Question\":{\"QuestionId\":51,\"QuestionText\":\"Are you smart?\",\"Answer\":\"Yes\"}}]";dynamic myObject = JValue.Parse(jsonString);foreach (dynamic questions in myObject){Console.WriteLine(questions.Question.QuestionId + "." + questions.Question.QuestionText.ToString());Console.WriteLine("Ans. " +questions.Question.Answer);Console.WriteLine();}Console.Read();

点评区

其实我觉得既然都用了 JsonConvert ,直接用它内置的 JObject,JToken 来动态解析 json 即可,就如 Varun Nair 所述,简单粗暴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么国外程序员加班少?他们这样评价国内996和技术公众号

有人统计过&#xff0c;我们平均每天花在看内容上的时间是5-6小时与其每天被各种看过就忘的内容占据时间不如看点真正对你有价值的信息下面小编为你推荐几个高价值的公众号它们提供的信息能真正提高你生活的质量长按二维码&#xff0c;选择【识别图中二维码】关注Python爱好者社…

c语言编程每日一练教程,每日一练 | C语言之指针

原标题&#xff1a;每日一练 | C语言之指针练习导言学习 C 语言的指针既简单又有趣。通过指针&#xff0c;可以简化一些 C 编程任务的执行&#xff0c;还有一些任务&#xff0c;如动态内存分配&#xff0c;没有指针是无法执行的。所以&#xff0c;想要成为一名优秀的 C 程序员&…

dynamic flash xml news----滚动新闻

今天有人问起这个问题&#xff0c;抽出晚上的一点时间&#xff0c;做了一个&#xff0c;时间紧难免有不足之处&#xff0c;如果发现bug&#xff0c;请以在贴出。演示&#xff1a;代码&#xff1a;代码://copyright by webstudio.com.cn 2005-4-7 system.useCodepagetrue; Stage…

C# 代码生成二维码方法及代码示例(QRCoder)

背景二维码是越来越流行了&#xff0c;很多地方都有可能是使用到。如果是静态的二维码还是比较好处理的&#xff0c;通过在线工具就可以直接生成一张二维码图片&#xff0c;比如&#xff1a;草料二维码。但有的时候是需要动态生成的&#xff08;根据动态数据生成&#xff09;&a…

你对手机打字一无所知!| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频源网络&#xff0c;侵权删&#xff09;你真的会打字吗↓ ↓ ↓

because it is not a variable 编译错误解决方案

1&#xff0c;将Stuct换为class 2&#xff0c;使用中间变量&#xff0c; 如Point pnew Point(x,y); this.Locationp; 而不能直接给struct赋值&#xff0c;因为值类型是不能改变的&#xff0c;必须生成新的值类型

C语言笔试很难,C语言笔试题中的“坑”

其实这话说的不对&#xff0c;应该说不只是C语言&#xff0c;恐怕是面试题总会有那么一些坑等着我们踩&#xff0c;今天&#xff0c;就罗列了一些看似简单&#xff0c;却很容易中招的面试题&#xff1a;1、以下程序的执行结果为。#inlcude #define N 2#define M N1#define…

养鹿专辑二:恋鹿篇之枕着老婆的梦编程

明天要去帮伊哥到交通厅去做项目----说帮伊哥其实有点不负责,实际上是我们两个一起在做,因为我临时考试,就让伊哥一个人辛苦了,现在想来,确实不好得很,所以伊哥要留着做兴宏,我刚好不是忙得一团糟,明早(其实是今早,现在凌晨2:06)赶早去那边,做点事情,早去早回,工作效率高点,早九…

并行中的分区Partitioner

本篇介绍在C#中&#xff0c;把一个大集合&#xff0c;或大数组分成若干个区来执行。Demo中是把一组字符串放在list中&#xff0c;然后并行生成MD5串&#xff0c;返回回来。using System; using System.Collections.Generic; using System.Reflection; using System.Threading.T…

搞笑诺贝尔颁出,中国科学家入选!阿蟑有磁性、睾丸热不对称,10大奇葩研究来了...

全世界只有3.14 % 的人关注了青少年数学之旅Laugh and think&#xff0c;科学的另一面&#xff0c;就是有趣&#xff01;——在今天的哈佛大学桑德斯剧场&#xff0c;一群科学家身体力行地证明了这件事&#xff0c;在诺贝尔奖颁出前夕&#xff0c;率先发布了今年的“搞笑诺贝尔…

C++中的对象数组

类是对象的抽象&#xff0c;我们可以使用一个类来定义很多的对象&#xff0c;然后每个对象都有自己的属性。 当我们使用类来定义很多相同结构的对象的时候&#xff0c;我们可以采取对象数组的方法。 例如&#xff0c;一个班有50个学生&#xff0c;我们定义了一个学生类&#xf…

成绩排序 九度教程c语言,九度OJ 1089 数字反转

题目分析&#xff1a;使用队列存放每一位的数字&#xff0c;然后输出并计算得到反转数值&#xff0c;从而实现数字反转。源代码&#xff1a;[cpp]#include#includeusing namespace std;int main(){int n;cin>>n;int m 1;while (m < n) //控制行数循环{int a,b;cin&…

超越竞争(2) 价值创新

中国武功的最高境界----无招胜有招&#xff01;今天看了朋友的回复&#xff0c;道&#xff1a;回避竞争也是一种竞争策略。的确&#xff0c;我们可以通过回避竞争&#xff0c;寻找差异化的定位&#xff0c;避免正面与竞争对手的冲突&#xff0c;但是当你庆幸着自己抢占了一片新…

周杰伦新歌《说好不哭》彩蛋大汇总! | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅一首单曲&#xff0c;就霸占了一半的微博热搜榜&#xff0c;除了周杰伦&#xff0c;估计也没别人能做得到了。回想起前段时间&#xff0c;周杰伦的中老年粉丝与ikun们围绕着“顶级流量”展开的那场battle...说实话&#xff0c;那场 b…

AI日报:2024年人工智能对各行业初创企业的影响

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 2024年人工智能对初创企业的影响具体行业医疗金融服务运输与物流等 新趋势 2024年人工智能对初创企业的影响 2023年见证了人工智能在各个行业的快速采用和创新。随着我们步入2024年&#xff0c;人工智能初创公司正…

Ant Design Blazor 组件库的路由复用多标签页介绍

前言Blazor 是 .NET 最新的前端框架&#xff0c;可以基于 WebAssembly 或 SignalR &#xff08;WebSocket&#xff09;构建前端应用程序&#xff0c;基于 WebAssembly 托管模型的 Blazor 甚至可以离线运行。再加上可以共用 .NET 类库&#xff0c;能使代码量比以往的基于 JS 的前…

c语言程序设计稀土,稀土掺杂Tarkall-C合金多尺度设计及计算

摘要&#xff1a;为研制应用于船用低速机缸套的新型铸铁材料,提出多尺度设计稀土掺杂Tarkall-C合金,使其符合设计使用要求。本文主要使用多尺度模拟方法,从第一性原理计算及有限元模拟两个方面,对稀土掺杂Tarkall-C合金进行了研究。从第一性原理的角度,从量子尺度研究了稀土掺杂…

WOL远程开机

最近在一直都在研究PC机硬件和软件相结合的软件&#xff0c;硬件信息都是通过C与驱动结合获取。对于一个好久都没有接触C的人来说看这些东西太费劲了&#xff0c;必须的重新捡一下C的基础知识&#xff0c;必然也少不了C知识&#xff0c;底层都是通过C与C结合&#xff0c;提供接…

代码收藏——js+asp 的屏幕滚动脚本

最近刚刚到公司&#xff0c;写得这个东西&#xff0c;放在这里收藏一下&#xff0c;方便以后用。 效果演示&#xff1a;http://www.9600100.com/ <script type"text/javascript" language"javascript"> <%divID%>marqueesHeightone300; <%d…

AI 竟然通过了初中生考试!?这意味着什么?

全世界只有3.14 % 的人关注了青少年数学之旅2016 年 AlphaGo 战胜世界棋王李世石&#xff0c;被认为是人工智能一个重要的里程碑。此后 AlphaGo 又击败了世界排名第一的围棋选手柯洁&#xff0c;AI 也在德州扑克、Dota 2 等游戏上战胜了专业的人类玩家&#xff0c;越来越聪明的…