Перебор элементов словаря и добавление их в список - PullRequest
0 голосов
/ 19 декабря 2018

Поскольку я перебираю элементы словаря и добавляю их в список.Здесь мне нужно выбрать «элемент» на основе ключевых элементов и сохранить его в список.

  {"0":["1234","2222","4321","211000","90024","12","2121","322223","2332","3232"],"1":["0856","6040222","175002","23572","","","","","",""]}

    List<string> strlist;
    strlist = new List<string>();

    var jr = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(paramValue);

    foreach (var item in jr)
    {
      // Need to add item on basis of Key
      // Can we include any where clause
       strlist.AddRange(item.Value);
    }

Спасибо

1 Ответ

0 голосов
/ 19 декабря 2018

Если я правильно понимаю, что означает Need to add item on basis of Key, то это должно сработать для вас:

List<string> strlist = new List<string>();
var jr = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(paramValue);

foreach (var item in jr)
{
  if(item.Key == "someKey")
  {
      strlist.AddRange(item.Value);
  }
}

или если у вас есть несколько ключей, с которыми вы хотите сопоставить:

List<string> strlist = new List<string>();
var jr = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(paramValue);
List<string> targetKeys = new List<string>{"someKey", "anotherKey", "oneAwesomeKey"};

foreach (var item in jr)
{
  if(targetKeys.Contains(item.Key))
  {
      strlist.AddRange(item.Value);
  }
}

Первый пример здесь показывает добавление значения словаря, только если ключ равен определенной строке (someKey в этом примере).Во втором примере показано добавление значения словаря, если ключ словаря содержится в определенном списке строк.

Вы также можете использовать linq для достижения этого следующим образом:

var jr = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(paramValue);

var strlist= jr.Where(x => x.Key == "someKey").SelectMany(x => x.Value).ToList();

аналогично для сопоставленияна нескольких клавишах:

var jr = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(paramValue);
List<string> targetKeys = new List<string>{"someKey", "anotherKey", "oneAwesomeKey"};

var strlist= jr.Where(x => targetKeys.Contains(x.Key)).SelectMany(x => x.Value).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...