日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/4 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NET问答: 如何在 dynamic 集合上使用 Linq ? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

咨詢區(qū)

  • user1618825

有沒有一種方式可以將 dynamic 對象轉成 可過濾的 IEnumerable 類型對象?比如下面的代碼:

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

然后用Linq去訪問

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

回答區(qū)

  • Jon Skeet

只要 data 是某一種 IEnumerable 類型,就可以像下面這樣用。

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

這里用 Cast<dynamic>() 的目的就是將 data 轉成 IEnumerable<dynamic>,好處在于 lambda 表達式 中的參數(shù)也是 動態(tài)類型。

  • 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();

點評區(qū)

其實我覺得既然都用了 JsonConvert ,直接用它內(nèi)置的 JObject,JToken 來動態(tài)解析 json 即可,就如 Varun Nair 所述,簡單粗暴。

總結

以上是生活随笔為你收集整理的NET问答: 如何在 dynamic 集合上使用 Linq ?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。