У меня есть сопоставление json, которое выглядит, как показано ниже.
{
"MappingFields": [
{
"ID": "M1",
"Name": "John",
"Role": "Developer"
},
{
"ID": "M2",
"Name": "Peter",
"Role": "Tester"
}]
}
Мне нужно сравнить поле ID
с тем, которое я получаю на входе, и получить соответствующие значения Name
и Role
. Я добился того же через ниже.
string id = "M2"; \\input value
List<MappingField> mappedData = mappingFields.MappingFields.ToList(); \\MappingField is a data model
string name = string.Empty;
string role = string.Empty;
foreach(var item in mappedData)
{
if(item.ID == id)
{
name = item.Name;
role = item.Role;
}
}
Я считаю, что это можно сделать более простым способом с помощью лямбда-выражения. И вот что я пробовал ниже.
name = mappedData.Where(o => o.ID == id).Select(p => p.Name).ToString();
role = mappedData.Where(o => o.ID == id).Select(p => p.Role).ToString();
Но я не получаю значение переменной. Вместо этого я получаю следующее.
System.Linq.Enumerable + WhereSelectListIterator`2 [Test.Lib.Model.MappingField, System.String]
Что я отсутствует здесь? Любая помощь будет принята с благодарностью.