zoukankan      html  css  js  c++  java
  • 将LINQ To DataSet 传回之对象集转成DataTable的函数

    静态方法:

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Reflection;

    Public static DataTable LinqToDataTable(IEnumerable list)
    {
                DataTable table = new DataTable();
                bool schemaIsBuild = false;
                PropertyInfo[] props = null;
                foreach (object item in list)
                {
                    if (!schemaIsBuild)
                    {
                        props = item.GetType().GetProperties();
                        foreach (var pi in props)
                            table.Columns.Add(new DataColumn(pi.Name, pi.PropertyType));
                        schemaIsBuild = true;
                    }
                    var row = table.NewRow();
                    foreach (var pi in props)
                        row[pi.Name] = pi.GetValue(item, null);
                    table.Rows.Add(row);
                }
                table.AcceptChanges();
                return table;
    }

    调用:

    var table = LinqToDataTable(
                     from s1 in ds.Tables["Customers"].AsEnumerable()
                     join s2 in ds.Tables["Orders"].AsEnumerable() on s1["CustomerID"] equals s2["CustomerID"]
                     where s2.Field<DateTime>("OrderDate") > DateTime.Parse("1997/1/1") &&
                     s2.Field<DateTime>("OrderDate") < DateTime.Parse("1997/5/31")
                     select new
                    {
                    OrderID = s2.Field<int>("OrderID"),
                    CustomerName = s1.Field<string>("CompanyName"),
                    OrderDate = s2.Field<DateTime>("OrderDate")
              });
    foreach (DataRow item in table.Rows)
         Console.WriteLine(item["CustomerName"]);
    Console.ReadLine();

  • 相关阅读:
    eclipse环境:把jdk1.6 改 jdk1.7或jdk1.8(改回也可以)(图文详解)
    SVN 将文件还原到之前的指定版本
    用起来很方便的枚举扩展类
    VS2015新功能
    EasyUi 动态列
    基于EasyUi的快速开发框架
    深圳某保险公司招聘职位列表
    考勤系统之计算工作小时数
    考勤系统之状态管理
    第一次裁员
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/1780213.html
Copyright © 2011-2022 走看看