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