Как найти конкретное значение в IDictionary<string, object>?
Это IDictionary<string, object>
содержит пользовательские данные, которые я вхожу в mongodb. Проблема заключается в TValue
это сложный объект. TKey
это просто имя класса.
Например:
public class UserData
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Admin NewAdmin { get; set; }
}
public class Admin
{
public string UserName { get; set; }
public string Password { get; set; }
}
В настоящее время я пытаюсь перебрать Dictionary
и сравнивать типы но безрезультатно. Есть ли лучший способ сделать это или я пропустил оценку?
var argList = new List<object>();
foreach(KeyValuePair<string, object> kvp in context.ActionArguments)
{
dynamic v = kvp.Value;
//..compare types...
}
1 ответ
Просто используйте OfType<>()
, Тебе даже не нужен ключ.
public static void Main()
{
var d = new Dictionary<string,object>
{
{ "string", "Foo" },
{ "int", 123 },
{ "MyComplexType", new MyComplexType { Text = "Bar" } }
};
var s = d.Values.OfType<string>().Single();
var i = d.Values.OfType<int>().Single();
var o = d.Values.OfType<MyComplexType>().Single();
Console.WriteLine(s);
Console.WriteLine(i);
Console.WriteLine(o.Text);
}
Выход:
Foo
123
Bar