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

  • 相关阅读:
    C++学习 之 程序的组成部分(部分知识笔记)
    debian下重装mysql
    CGI 环境变量
    boost的libboost_system问题
    debian下使用shell脚本时出现了 declare:not found 解决方法
    编译的时候出现"/usr/bin/ld: cannot find -lz
    glibc升级,解决glib版本过低的问题
    ubuntu彩色图形界面
    (转)http://blog.chinaunix.net/uid-8363656-id-2031644.html CGI 编写
    linux安装JSONCPP
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/1780213.html
Copyright © 2011-2022 走看看