上获取更多信息
我有一个JSON文件,其中包含一个图标列表,每个图标都有每个标签列表。看起来这样:
{
"IconTags": [
{
"Key": "Com_Active",
"Tags": [
"Green",
"Circle",
"Active"
]
},
{
"Key": "Com_Add",
"Tags": [
"Green",
"Plus",
"Add"
]
}
]
}
在运行时,使用JSON.NET,我想为特定图标键解析JSON并返回标签列表。
这是我目前拥有的:
JObject iconTags = JObject.Parse(File.ReadAllText(@"IconTags.json"));
var tags = from i in iconTags["IconTags"]
where i["Key"].Value<string>() == "Com_Add"
select i["Tags"].Values<string>();
这有效,但返回IEnumerable<IEnumerable<String>>
。
我希望我的linq查询只返回 IEnumerable<String>
。
你们中的任何一个出色的专家都可以帮助我解决我的linq查询吗?
欢呼!
您可以使用SelectMany,这将使所有枚举所有枚举。
iconTags["IconTags"].Where(i => i["Key"].Value<string>() == "Com_Add" )
.SelectMany(i => i["Tags"].Values<string>());
您可以在MSDN文章
您需要拥有这样的东西:
var tags = (from i in iconTags["IconTags"]
where i["Key"].Value<string>() == "Com_Add"
select i["Tags"].Values<string>()).First();
它将返回您获得的枚举的第一个元素