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();

  • 相关阅读:
    消息队列(一)
    Servlet3.1学习(三)
    再弄一片文章凑个4篇文章的数,主要是用于XML和 Binary序列化和反序列化的类
    Entity Framework底层操作封装(3)
    Entity Framework底层操作封装(2)
    Entity Framework底层操作封装(1)
    实现合并区间
    socket简单案例实现
    PostgreSQL11.2数据恢复记录(From Physical Files)
    Spring Data JPA 与 MyBatis 对比分析
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/1780213.html
Copyright © 2011-2022 走看看