我有一个JSON文件,其中包含按键列表,每个图标都有一个标签列表。它看起来像这样:
{
"IconTags": [
{
"Key": "Com_Active",
"Tags": [
"Green",
"Circle",
"Active"
]
},
{
"Key": "Com_Add",
"Tags": [
"Green",
"Plus",
"Add"
]
}
]
}
在运行时,使用JSON.NET,我想解析特定图标Key的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查询吗?
干杯!
答案 0 :(得分:0)
您可以使用SelectMany,这将使所有枚举变得扁平化。
iconTags["IconTags"].Where(i => i["Key"].Value<string>() == "Com_Add" )
.SelectMany(i => i["Tags"].Values<string>());
您可以在MSDN文章
获取更多信息答案 1 :(得分:0)
你需要有这样的东西:
var tags = (from i in iconTags["IconTags"]
where i["Key"].Value<string>() == "Com_Add"
select i["Tags"].Values<string>()).First();
它将返回您可以获取的可枚举的第一个元素