首页 > 其他 > 详细

几个和DataTable相关的函数

时间:2014-08-05 23:15:42      阅读:501      评论:0      收藏:0      [点我收藏+]

一、关于本文

本文中的DataTableHelper类包括了4个操作DataTable的函数,分别是

1)public static DataTable GetTestDataTable()

这是一个测试用的函数,生成一个有内容的DataTable

2)public static string PrintDataTable(DataTable dt)

这个函数向控制台打印一个DataTable中的所有内容

3)public static DataTable GetAnotherDataTable(DataTable dt)

这个函数制造一个和原DataTable一模一样的DataTable副本

4)public static DataTable Sort(DataTable dt, string rule)

这个函数通过rule指定的规则,返回一个新的排序后的DataTable

二、DataTableHelper类代码

需要添加 using System.Data;

/// <summary>
/// DataTable工具类
/// </summary>
class DataTableHelper
{
    /// <summary>
    /// 生成一个测试用的DataTable
    /// </summary>
    /// <returns>测试用的DataTable</returns>
    public static DataTable GetTestDataTable()
    {
        DataTable dt = new DataTable("DataTable4Test");

        dt.Columns.Add("Id");
        dt.Columns.Add("Name");
        dt.Columns.Add("Data");

        dt.Rows.Add("0", "Tsybius", "20140509");
        dt.Rows.Add("1", "Galatea", "20140723");
        dt.Rows.Add("2", "Gnaeus", "20130314");
        dt.Rows.Add("3", "Titus", "20130104");
        dt.Rows.Add("4", "Publius", "20151111");

        return dt;
    }

    /// <summary>
    /// 向控制台打印DataTable中内容
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static string PrintDataTable(DataTable dt)
    {
        StringBuilder sb = new StringBuilder();

        //1.打印DataTable名
        sb.Append("TableName: " + dt.TableName + "\n");
            
        //2.打印列头
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            sb.Append(dt.Columns[i].ColumnName + "\t");
        }
        sb.Append(‘\n‘);

        //3.打印各列
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                sb.Append(dt.Rows[i][j].ToString() + "\t");
            }
            sb.Append(‘\n‘);
        }

        sb.Append("Output Complete!");

        return sb.ToString();
    }

    /// <summary>
    /// 生成一个与原DataTable一模一样的DataTable
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static DataTable GetAnotherDataTable(DataTable dt)
    {
        DataTable dtAnother = dt.Clone();
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            dtAnother.Rows.Add(dt.Rows[i].ItemArray); 
        }
        return dtAnother;
    }

    /// <summary>
    /// 对DataTable进行排序
    /// </summary>
    /// <param name="dt">待排序数据源</param>
    /// <param name="rule">DataView的Sort项</param>
    /// <returns>一个排序好的数据源</returns>
    public static DataTable Sort(DataTable dt, string rule)
    {
        DataView dv = dt.DefaultView;
        dv.Sort = rule;
        return dv.ToTable();
    }
}

二、Main函数调用示例

class Program
{
    static void Main(string[] args)
    {
        //1.生成一个测试用的DataTable并输出其内容
        DataTable dt1 = DataTableHelper.GetTestDataTable(); //获取测试DataTable
        string a = DataTableHelper.PrintDataTable(dt1);     //输出DataTable内容
        Console.WriteLine(a);

        Console.WriteLine("----");

        //2.生成一个与dt相同结构相同内容的DataTable
        DataTable dt2 = DataTableHelper.GetAnotherDataTable(dt1);
        dt2.Rows[0].Delete(); 
        Console.WriteLine("dt1行数:" + dt1.Rows.Count); //5
        Console.WriteLine("dt2行数:" + dt2.Rows.Count); //4

        Console.WriteLine("----");

        //3.为dt1排序(1)
        DataTable dt3 = DataTableHelper.Sort(dt1, "Id Desc");
        string b = DataTableHelper.PrintDataTable(dt3);
        Console.WriteLine(b);

        Console.WriteLine("----");

        //4.为dt1排序(2)
        DataTable dt4 = DataTableHelper.Sort(dt1, "Name Asc,Data Desc");
        string c = DataTableHelper.PrintDataTable(dt4);
        Console.WriteLine(c);

        Console.ReadLine();
    }
}

三、运行效果截图

bubuko.com,布布扣

END

几个和DataTable相关的函数,布布扣,bubuko.com

几个和DataTable相关的函数

原文:http://my.oschina.net/Tsybius2014/blog/298330

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!