需要使用JSON.NET选择标签列表的LINQ帮助



我有一个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();

它将返回您获得的枚举的第一个元素

相关内容

  • 没有找到相关文章

最新更新