Преобразование анонимного типа в словарь - PullRequest
1 голос
/ 22 сентября 2019

Я пытаюсь создать функцию, которая преобразует анонимный тип в словарь.Я перебирал принятый ответ по этой ссылке Тема .Однако я получаю сообщение об ошибке

Невозможно использовать лямбда-выражение в качестве аргумента для динамически отправляемой операции без предварительного приведения его к типу дерева делегата или выражения

Вот чтоЯ пытаюсь сделать

public Dictionary<string,string> convert(dynamic dtype)
{
 var props = content.GetType().GetProperties();
 var pairs = props.Select(x => x.Name + "=" + x.GetValue(a, null)).ToArray();  // <----Exception
 var result = string.Join("&", pairs);
 return result
} 

Любое предложение о том, как я могу это исправить?Я пытаюсь сделать это

       var student= new
        {
            // TODO: Make this figure out and return underlying device status.
            type = "Active",
        };



 var dict = convert(student);

1 Ответ

1 голос
/ 22 сентября 2019

здесь исключение:

 x.GetValue(a, null)

просто измените a на content вот так:

var pairs = props.Select(x => x.Name + "=" + x.GetValue(content, null)).ToArray();

содержимое это имя вашего анонимного объекта.

Но это решение, которое вы написали, не возвращает словарь. если вы хотите, чтобы словарь делал это :

public static Dictionary<string, string> convert(object content)
        {

            var props = content.GetType().GetProperties();
            var pairDictionary = props.ToDictionary(x => x.Name,x=>x.GetValue(content,null)?.ToString());
            return pairDictionary;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...