其他类型转化成DataTable

class Program
{
    static void Main(string[] args)
    {
        List<Student> list = new List<Student>();
        list.Add(new Student()
        {
            ID = 1,
            Name = "Fabre",
            Sex = true,
            Age = 27,
            Birthday = DateTime.Now
        });
        string[] strTitle = new string[] { "ID", "Name", "Sex", "Age", "Birthday" };
        DataTable dt = GetDataTable(list, strTitle);
    }

    public static  DataTable GetDataTable(dynamic objects, string[] strFields)
    {
        DataTable dt = new DataTable();
        bool isFirst = true;
        foreach (var obj in objects)
        {
            DataRow dr = dt.NewRow();
            foreach (string item in strFields)
            {
                if (isFirst)
                {
                    dt.Columns.Add(item);//创建列
                }
                dr[item] = GetPropertyValue(obj, item);//单元格赋值
            }
            isFirst = false;//第一次创建表头,往后都不用创建了,用一个标识处理
            dt.Rows.Add(dr);
        }
        return dt;
    }

    /// <summary>
    /// 获取一个实例指定的属性值
    /// </summary>
    /// <param name="info">object对象</param>
    /// <param name="field">属性名称</param>
    /// <returns></returns>
    public static object GetPropertyValue(object info, string field)
    {
        if (info == null)
        {
            return null;
        }
        Type t = info.GetType();
        IEnumerable<System.Reflection.PropertyInfo> property = from pi in t.GetProperties()
                                                               where pi.Name.ToLower() == field.ToLower()
                                                               select pi;
        if (property.Count() < 1)
        {
            return "";
        }
        return property.First().GetValue(info, null);
    }
}

public class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
    //true 男 false 女
    public bool Sex { get; set; }
    public int Age { get; set; }
    public DateTime Birthday { get; set; }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值