Если я правильно понимаю, что означает 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();