一.获取对象中的所有属性

Type是.net定义的一个反射的类。通过反射获取到对象的所有属性,然后根据属性获取对象对应属性所对应的值。

使用PropertyInfo,请引用命名空间using System.Reflection;

1、首先定义一个对象People

  /// <summary>
/// 定义一个People类
/// </summary>
public class People
{
/// <summary>
/// 省份证号
/// </summary>
public string CartId { get; set; }
/// <summary>
/// 名字
/// </summary>
public string Name { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime BirthDay { get; set; }
/// <summary>
/// 性别
/// </summary>
public string Sex { set; get; }
}

2、对象初始化

    //利用对象初始化器初始化对象
            People people = new People
            {
                CartId = "5342323123124124124",
                Name = "zhangsan",
                BirthDay = new DateTime(1990, 9, 11),
                Sex = "男"
            };

3、获取属性值

    //获取Name属性的值
            Console.WriteLine(type.GetProperty("Name").GetValue(people, null));

4、调用对应属性的值

  static void Main(string[] args)
{
//利用对象初始化器初始化对象
People people = new People
{
CartId = "",
Name = "zhangsan",
BirthDay = new DateTime(, , ),
Sex = "男"
};
//获取People的数据类型
Type type = people.GetType();
//获取对象的所有属性
PropertyInfo[] properties = type.GetProperties();
//获取Name属性的值
Console.WriteLine(type.GetProperty("Name").GetValue(people, null));
//获取所有属性的名称和对应的值
foreach (var pro in properties)
{
//属性的名称
Console.WriteLine(pro.Name);
//属性对应的值
Console.WriteLine(pro.GetValue(people, null));
}
Console.ReadKey();
}

实例:

对于Linq的数据导出成Excel

首先对于var q =from m in dbContext.Pepples

        where m.Sex=="男"

        select new{

          姓名=m.Name,

          省份证号=m.CartId,

          出生日期=m.BirthDay,

          性别=m.Sex

        };

我们得到的q是一个IEnumerable<T>类型的数据.对于这种数据我们一般都是可以使用.ToList()将其转化为范型集合来处理。

我们怎么样将数据导出的呢?

首先定义一个函数

   /// <summary>
/// 导出数据源
/// </summary>
/// <param name="list">数据源</param>
public static void OutPutList<T>(List<T> list)
{
XlsDocument xls = new XlsDocument();
Worksheet sheet = xls.Workbook.Worksheets.Add("数据表");
//获取数据的类型
Type type = list[].GetType();
PropertyInfo[] properties = type.GetProperties();
//获取模型的所有属性(名称)
for (int i = ; i < properties.Length; i++)
{
sheet.Cells.Add(, i + , properties[i].Name);
} //将数据写入到Excel
for (int j = ; j < list.Count; j++)
{
type = list[j].GetType();
properties = type.GetProperties();
for (int i = ; i < properties.Length; i++)
{
//获取对应属性的对应值
sheet.Cells.Add(j + , i + , properties[i].GetValue(list[j], null));
}
} //写入数据库
xls.FileName = "FF_" + DateTime.Now.ToString("yyyyMMddHHmmss");
xls.Send();
}

这种方法的缺点就是不能按照想要的顺序导出成EXCEL.

最新文章

  1. myeclipse eclipse 使用git插件访问github 的解决方案
  2. LINQ教程
  3. python自定义logger handler
  4. js弹出对话框的方法总结
  5. &lt;mvc:annotation-driven /&gt;
  6. linux tcp状态学习
  7. Windows下安装Cygwin
  8. 【转】PLSQL developer 连接不上64位Oracle 的解决方法
  9. Memory Cache(内存缓存)
  10. Android之ListView常用技巧
  11. 抓包分析TCP的三次握手和四次分手
  12. 使用Busybox-1.2.0制作根文件系统
  13. Visual Studio快速封装字段方法
  14. win7下不能收到窗口hook消息的问题
  15. wamp+python+CGI+wingIDE
  16. Java并发系列[8]----CyclicBarrier源码分析
  17. 微信小程序 open-data更改样式 open-data 显示头像 圆形
  18. 洛谷 p1219 八皇后
  19. 浅入浅出JDBC————1分钟了解JDBC
  20. [ 10.03 ]CF每日一题系列—— 534B贪心

热门文章

  1. 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成
  2. ssh forwarding 配置
  3. SAS学习笔记 - 基本原理与概念
  4. android Qemu GPS 模块简明分析
  5. 基于Office 365 无代码工作流分析-数据源的建立!
  6. SP2-0734: 未知的命令开头 &amp;quot;imp scott/...&amp;quot; - 忽略了剩余的行。
  7. 仰视源代码,实现strcmp
  8. Cholesky分解 平方根法
  9. 【转】React 常用面试题目与分析
  10. 堆排序的C实现