前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >匿名对象和object的转换

匿名对象和object的转换

作者头像
跟着阿笨一起玩NET
发布2018-09-18 17:45:57
8110
发布2018-09-18 17:45:57
举报

参考http://www.2cto.com/kf/201207/139227.html

代码语言:javascript
复制
有时候经常用到需要把一个匿名对象存入session或List<object>或其他容器中,可是取出来的时候变成object了,不太方便使用。 
下面是一种转换方式:
 
[csharp] 
 
    class Program  
 
    {  
 
        static void Main(string[] args)  
 
        {  
 
            List<object> olist = new List<object>();  
 
            olist.Add(new { Name = "Hauk", Age = 22 });  
 
            olist.Add(new { Name = "Emily", Age = 22 });  
 
  
 
  
 
            //使用动态类型  
 
            foreach (dynamic item in olist)  
 
            {  
 
                Console.WriteLine(item.Name);  
 
            }  
 
  
 
  
 
            //做类型转换  
 
            var obj = ChangeType(olist[0], new { Name = "", Age = 0 });  
 
            Console.WriteLine(obj.Name);  
 
  
 
  
 
            //直接反射  
 
            Console.WriteLine(olist[0].GetType().GetProperty("Name").GetValue(olist[0]).ToString());  
 
        }  
 
  
 
  
 
        static T ChangeType<T>(object obj, T t)  
 
        {  
 
            return (T)obj;  
 
        }  
 
    }  View Code
代码语言:javascript
复制
             /获取所有员工和账号列表对应关系。
            DataTable dtAccoutIDList = bll.GetList(model);
            //添加一行空行。
            DataRow dr = dtAccoutIDList.NewRow();
            dr["AccountName"] = "";
            dr["AccountID"] = "-2";
            dtAccoutIDList.Rows.InsertAt(dr, 0);
            dtAccoutIDList.AcceptChanges();
            this.cmbAccountList.DisplayMember = "AccountName";
            this.cmbAccountList.ValueMember = "[AccountID]";
   var query3 = dtAccoutIDList.AsEnumerable().Select(s => new { AccountID = s["AccountID"].ToInt(), AccountName = s["AccountName"].ToString() }).OrderBy(o => o.AccountName).Distinct().ToList();
                this.cmbAccountList.DataSource = query3;
--
将数据源转换为匿名对象数组。
var cmbAccountDataSource = this.cmbAccountList.DataSource.ChangeType(new[] { new { AccountID = 0, AccountName = "" } }.ToList()); 
或者 this.cceAccount.Properties.DataSource = accounts.Select(m => new { Account = m }).ToList();

将选择的项,转换为匿名对象
var cmbSelectedItem = this.cmbAccountList.SelectedItem.ChangeType(new { AccountID = 0, AccountName = "" });
int selectedAccountID=cmbSelectedItem.AccountID
string selectedAccoutName=cmbSelectedItem.AccountName
///扩展方法
 public static class Extension
 {
 public static T ChangeType<T>(this object obj, T t)
        {
            return (T)obj;
        }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-07-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档