C# linq:从一个对象中的对象到一个对象

C# linq:从一个对象中的对象到一个对象,c#,json,linq,C#,Json,Linq,目前我正在使用以下linq表达式: (group.Select(x => ((Dictionary<string, Object>)x).GetValueOrDefault("myvalue"))) 我想要的样子: 因此,我的Json如下所示: "myvalue": [ [ { "value1":

目前我正在使用以下linq表达式:

(group.Select(x => ((Dictionary<string, Object>)x).GetValueOrDefault("myvalue")))
我想要的样子:

因此,我的Json如下所示:

            "myvalue": [
            [
                {
                    "value1": "value1",
                    "value2": "value2",
                    "etc": "etc"
                }
            ],
            [
                {
                    "value1": "value1",
                    "value2": "value2",
                    "etc": "etc"
                }
            ]
        ]
            "myvalue": [
                {
                    "value1": "value1",
                    "value2": "value2",
                    "etc": "etc"
                },
                {
                    "value1": "value1",
                    "value2": "value2",
                    "etc": "etc"
                }
        ]

我想我可以通过使用.SelectMany(???).ToList()来修复它,但我还没有找到一种方法来修复它。有人知道我如何编写它吗?

下面的代码片段应该可以工作

group
   .Select(x => ((Dictionary<string, Object>)x).GetValueOrDefault("myvalue"))
   .Where(v => v != null)
   .Select(v => 
    {
       if (v is IEnumerable enumerable)
         return enumerable.OfType<object>();
       return new [] { v }
    })
   .SelectMany(e => e)
   .ToList();
组
.选择(x=>((字典)x).GetValuerDefault(“myvalue”))
.其中(v=>v!=null)
.选择(v=>
{
if(v是IEnumerable可枚举的)
返回可枚举的.of type();
返回新的[]{v}
})
.SelectMany(e=>e)
.ToList();

您可能可以像其他建议的答案一样使用
SelectMany()
,但是如果您知道您总是有一个元素,为什么不像这样使用.First()呢

(group.Select(x=>((字典)x).GetValueOrDefault(“myvalue”)).First())


我想你的班级怎么样?你能补充更多关于你目前使用的linq的信息吗?非常感谢。请您向我解释一下第二个过程中发生了什么。选择(v=>{…})?刚刚将
对象转换为IEnumerable。然后可以使用SelectMany。此代码也可以移动到SelectMany lambda。