using System.Collections.Generic;
using Newtonsoft.Json.Converters;
public static void Main()
var result = JsonConvert.DeserializeObject<SoNumbers>(GetJson());
var area1 = result.Result.Areas.FirstOrDefault(x => x.Id == 1);
var validItems = area1.Items.Where(IsItemValid);
var avg = validItems.Average(x => x.Value);
Console.WriteLine($"Area n°{area1.Id}, ItemSelected = [{string.Join(",", validItems.Select(x => x.Name))}] Average = {avg};");
static bool IsItemValid(Item item)
return (item.Numbers[0] == 2 || item.Numbers[0] == -2)
public static string GetJson()
public partial class SoNumbers
public Result Result { get; set; }
public partial class Result
public List<Area> Areas { get; set; }
public partial class Area
public long Id { get; set; }
public List<Item> Items { get; set; }
public partial class Item
public string Name { get; set; }
[JsonProperty("numbers")]
public List<long> Numbers { get; set; }
public double Value { get; set; }