c# - 有没有一种简单的方法可以将对象属性转换为字典<string, string>

标签 c# asp.net dictionary reflection

我有一个数据库对象(一行),它有很多映射到表单字段的属性(列)(asp:textbox、asp:dropdownlist 等)。我想将此对象和属性转换为字典映射,以便于迭代。

例子:

Dictionary<string, string> FD = new Dictionary<string,string>();
FD["name"] = data.name;
FD["age"] = data.age;
FD["occupation"] = data.occupation;
FD["email"] = data.email;
..........

如果不手动输入所有 100 多个属性,我如何轻松地做到这一点?

注意:FD字典索引与数据库列名相同。

最佳答案

假设 data 是某个对象,并且您想将其公共(public)属性放入字典中,那么您可以尝试:

原创 - 由于历史原因(2012 年):

Dictionary<string, string> FD = (from x in data.GetType().GetProperties() select x)
    .ToDictionary (x => x.Name, x => (x.GetGetMethod().Invoke (data, null) == null ? "" : x.GetGetMethod().Invoke (data, null).ToString()));

更新(2017 年):

Dictionary<string, string> dictionary = data.GetType().GetProperties()
    .ToDictionary(x => x.Name, x => x.GetValue(data)?.ToString() ?? "");

关于c# - 有没有一种简单的方法可以将对象属性转换为字典<string, string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115413/

相关文章:

c# - 一对多和递归关系 - 要设置的强制值

c# - 如何生成具有(单独)最小/最大限制的随机 double ?

c# - 使用正则表达式忽略空字符串和空格

c# - 定期更换桌面墙纸

c# - 连接列在数据表中添加数据

asp.net - CommandArgument(与 ASP.NET Repeater 一起使用)是否需要验证?

javascript - ASP .net 不触发提交事件

python - 有没有更快的方法将大量字典转换为 pandas DataFrame?

ios - 将我的应用程序转换为新的 Swift - 错误 "Extra argument in call"

python - 如何使用一个键将多个列表值的数据框制作成python中的字典?