Уничтожение списка списков, в которых внешний список не имеет идентификатора без жесткого кодирования [duplicate]

Использовать окно Immediate для выполнения команд

Окно Immediate также может использоваться для выполнения команд. Просто введите a >, за которым следует команда.

Например, >shell cmd запустит командную оболочку (это может быть полезно для проверки того, что переменные среды были переданы, например, Visual Studio). >cls очистит экран.

Вот список команд, которые так часто используются, что у них есть свои собственные псевдонимы: https://msdn.microsoft.com/en-us/ библиотека / c3a0kd3x.aspx

7
задан John Saunders 22 November 2012 в 19:55
поделиться

3 ответа

Серьезно, не нужно идти по динамическому маршруту; используйте

var deser = new JavaScriptSerializer()
    .Deserialize<Dictionary<string, Dictionary<string, int>>>(val);
var justDaily = deser["daily"];

, чтобы получить словарь, а затем вы можете, например,

foreach (string key in justDaily.Keys)
    Console.WriteLine(key + ": " + justDaily[key]);

, чтобы получить присутствующие клавиши и соответствующие значения.

19
ответ дан Rawling 21 August 2018 в 05:18
поделиться
  • 1
    Работал как абсолютное обаяние :) Спасибо! Это было похоже на самый логичный путь из всех ответов, которые я получил. – Jason Higgins 23 November 2012 в 03:27
  • 2
    PS. Вы забыли 3-й правый & gt; скобка в словаре Словарь! – Jason Higgins 23 November 2012 в 03:50
  • 3
    @JasonHiggins Спасибо за это. – Rawling 23 November 2012 в 09:59

Это не удобно использовать, потому что в с # нельзя определить переменную, начинающуюся с числа. Добавьте префикс к клавишам.

Или попробуйте:

string json = "
{ daily:[
  { key: '1337990400000', val:443447 },
  { key: '1338076800000', val:444693 },
  { key: '1338163200000', val:452282 },
  { key: '1338249600000', val:462189 },
  { key: '1338336000000', val:466626 }]
}";

public class itemClass
{
  public string key; // or int
  public int val;
}

public class items
{
  public itemClass[] daily;
}

items daily = (new JavascriptSerializer()).Deserialize<items>(json);

Затем вы можете:

var itemValue = items.Where(x=>x.key=='1338163200000').Select(x=>x.val).FirstOrDefault();
0
ответ дан Boris Gappov 21 August 2018 в 05:18
поделиться

Вы можете использовать dynamic в .NET 4 или более поздней версии. Например, с помощью JSON.NET я могу сделать:

dynamic obj = JsonConvert.Deserialize<dynamic>("{x: 'hello'}");

Затем вы можете:

var str = obj.x;

Однако не знаете, как он будет обрабатывать цифровые клавиши. Вы можете, конечно, просто использовать JObject непосредственно, например:

var obj = JObject.Parse("{'123456': 'help'}");
var str = obj["123456"];
3
ответ дан Lloyd 21 August 2018 в 05:18
поделиться
  • 1
    Если он не знает, какие ключи будут, можете ли вы получить «все ключи», сборник из динамического? – Rawling 22 November 2012 в 20:12
  • 2
    Возможно, использование отражения да (не будет красивым). Я предпочитаю использовать JObject, поскольку он в основном сжимает словаря. – Lloyd 23 November 2012 в 00:54
Другие вопросы по тегам:

Похожие вопросы: