Я новичок в запросе LINQ, и я хочу получить 1 элемент (один с id = 0
) из 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"];
Вот почему я думаю, что это null:
Я сделал упрощенную версию кода, который я использую на dotnetFiddle.com: https://dotnetfiddle.net/yS5cTk
Этот код работает для меня: 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);
}
}
}
}
using System.Linq;
в шапке еще нет?{
и}
ошибки?