我是LINQ查询的新手,我希望从id = 0
中获得1个项目(JToken
),但我无法知道这应该如何工作
我尝试了很多不同的方法,但这是我先尝试过的代码:
var statId0 = from stat in objectRankedStats where (int)stat["id"] == 0 select stat;
我发现了这个错误:
找不到源类型' Newtonsoft.Json.Linq.JToken'的查询模式的实现。 '凡'未找到。您是否缺少“System.Linq'”的引用或使用指令?
这看起来像objectRankedStats
:
{[ {
"id": 40,
"stats":
{
"totalSessionsPlayed": 10,
"totalSessionsLost": 8,
"totalSessionsWon": 2,
}
},
{
"id": 6,
"stats":
{
"totalSessionsPlayed": 3,
"totalSessionsLost": 2,
"totalSessionsWon": 1,
}
}
]}
我不明白"引用"处理退格
我声明了像这样的objectRankedStats,我在我的代码中的其他地方使用它并且它可以工作。
var objectRankedStats = JObject.Parse(output)["champions"];
这就是我认为它为空的原因:
我在dotnetFiddle.com上使用的代码的简化版本:https://dotnetfiddle.net/yS5cTk
答案 0 :(得分:1)
此代码适用于我: https://dotnetfiddle.net/P95aNq
using System;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace ConsoleApplication1
{
static class Program
{
static void Main()
{
try
{
const string output = @"{""champions"": [ {
""id"": 40,
""stats"":
{
""totalSessionsPlayed"": 10,
""totalSessionsLost"": 8,
""totalSessionsWon"": 2,
}
},
{
""id"": 6,
""stats"":
{
""totalSessionsPlayed"": 3,
""totalSessionsLost"": 2,
""totalSessionsWon"": 1,
}
}
]}";
var objectRankedStats = JObject.Parse(output)["champions"];
var champ = objectRankedStats.FirstOrDefault(jt => (int)jt["id"] == 6);
Console.WriteLine(champ);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}