我有一个数据库对象(一行),它有很多属性(列),映射成字段(asp:textbox, asp:dropdownlist etc).我想把这个对象和属性转换成一个字典映射,使其更容易迭代.

例子:

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是某个对象,并且您希望将其公共属性放入Dictionary中,那么您可以try :

Original - here for historical reasons (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()));

Updated (2017):

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

Asp.net相关问答推荐

IISExpress未在ARM64 Mac/.NET 4.8上启动

如何格式化搜索字符串以从 Razor 页表中的多个列返回部分搜索字符串?

如何在 ASP.NET RadioButtonList 中的项目之间添加空格

从数据库中检索数据的最快方法

IIS 6/ASP.NET Windows 身份验证 list ?

将存储过程中 Select 查询的结果返回到列表

使用 ASP.NET WebForms 的 jQuery DataTables 服务器端处理

如何将 Web 应用程序项目转换为类库项目

如何在 ASP.NET 中仅在调试模式下执行代码

页面在谷歌浏览器中加载两次

从后面的 asp.net 代码中读取表单身份验证 cookie

如何从 SQL Server 2008 本身获取客户端 IP 地址?

如何在不预编译的情况下使用命令行msbuild部署VS2012网站项目?

如何避免 ASP.NET MVC 中的 HttpRequestValidationException 呈现导致异常的相同视图

如何在我自己的方法中模仿 string.Format()?

带有模型的 ASP.NET MVC 重定向

删除 HTML 或 ASPX 扩展

ASP.NET 发布try 复制不存在的文件

如何将 GridView.DataSource 导出到数据表或数据集?

ASP.NET 中的嵌套中继器