簡體   English   中英

C#動態訪問子級為IEnumerable

[英]c# dynamic accessing child as IEnumerable

我有以下動態對象作為dynamic類型的IEnumerable

[{
    "id": 1,
    "subList": [
      {"specialId": 42}, 
      {"specialId": 27}
    ]
}, 
 {
    "id": 2,
    "subList": [
      {"specialId": 13}, 
      {"specialId": 14}
    ]
}]

我可以將對象放入IEnumerable of Dynamics中,並可以運行linq查詢,如下所示

listOfDynamics.Where(x => x.id == 2);

但是我想做的是能夠在subList上進行匹配

listOfDynamics.Where(x => ((IEnumerable)x.subList)).Where(y => y.specialId == 42));

因此在上面的示例中,它將返回ID為1而不是ID為2的對象

在你Where ,你要檢查,如果subList包含任何元素specialId == 42

listOfDynamics.Where(x => ((IEnumerable<dynamic>)x.subList).Any(y => y.specialId == 42));

所以Any()是您想要的方法。

並且您需要將x.subListIEnumerable<dynamic>而不是僅IEnumerable (如@ Ivan-Stoev和@Derked在注釋中所建議)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM