Table是怎样炼成的:Table

本文介绍了一个用于管理表数据的类Table的设计与实现,包括如何构造表、管理数据行、获取变化数据及筛选数据等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述一个数据表

  1    /// <summary>
  2    /// 描述一个数据表
  3    /// </summary>

  4    public class Table
  5    {
  6
  7        protected Table(string name, ColumnCollection cols)
  8        {
  9            TableName = name;
 10            Columns = cols;
 11            Rows = new RowCollection();
 12        }

 13
 14        /// <summary>
 15        /// 获取或设置表的列架构
 16        /// </summary>

 17        protected readonly ColumnCollection Columns;
 18        /// <summary>
 19        /// 获取或设置表的数据行
 20        /// </summary>

 21        protected RowCollection Rows;
 22        /// <summary>
 23        /// 获取或设置表的名称
 24        /// </summary>

 25        protected readonly string TableName;
 26
 27        /// <summary>
 28        /// 将该行数据状态改为RowState.Unchanged
 29        /// </summary>

 30        protected void AcceptChanges()
 31        {
 32            for (int i = 0; i <= Rows.Count - 1; i++)
 33            {
 34                Rows[i].AcceptChanges();
 35            }

 36        }

 37
 38        /// <summary>
 39        /// 移除所有数据行
 40        /// </summary>

 41        protected void Clear()
 42        {
 43            this.Rows.Clear();
 44        }

 45
 46        /// <summary>
 47        /// 返回状态匹配的数据行,并以新数据表的形式体现
 48        /// </summary>
 49        /// <param name="rowState"></param>
 50        /// <returns></returns>

 51        protected Table GetChanges(RowState rowState)
 52        {
 53            Table tmpTable = new Table(rowState.ToString(), this.Columns);
 54            foreach (Row row in Rows)
 55            {
 56                if (row.RowState == rowState)
 57                {
 58                    tmpTable.Rows.Add(row);
 59                }

 60            }

 61            return tmpTable;
 62
 63        }

 64
 65        /// <summary>
 66        /// 依据现有的数据表的架构,生成新的数据行
 67        /// </summary>
 68        /// <returns></returns>

 69        protected Row NewRow()
 70        {
 71            return new Row(Columns, this.TableName);
 72        }

 73
 74        /// <summary>
 75        /// 按关键字(数据行的第一列)匹配,并返回符合的数据行
 76        /// </summary>
 77        /// <param name="filterKey"></param>
 78        /// <returns></returns>

 79        protected Row[] Select(string filterKey)
 80        {
 81            System.Collections.ArrayList tmpRows = new System.Collections.ArrayList();
 82            foreach (Row row in Rows)
 83            {
 84                if (row[0].ToString() == filterKey)
 85                {
 86                    tmpRows.Add(row);
 87                }

 88            }

 89            return (Row[])tmpRows.ToArray(typeof(Row));
 90        }

 91
 92        /// <summary>
 93        /// 打印Table的数据
 94        /// </summary>

 95        public virtual void Print()
 96        {
 97            System.Text.StringBuilder sb = new StringBuilder();
 98
 99            foreach (Column col in this.Columns)
100            {
101                sb.AppendFormat("{0}/t", col.ColumnName);
102            }

103            sb.AppendLine();
104            System.Console.WriteLine(sb.ToString());
105            foreach (Row row in this.Rows)
106            {
107                foreach (object obj in row.ItemArray)
108                {
109                    System.Console.Write("{0}/t", obj);
110                }

111                System.Console.WriteLine();
112            }

113        }

114    }

 

 好,到此Table所涉及的5个类都定义实现完毕了。
我们来回顾一下,Table中什么是最基础的,什么是最重要的?
按我们一般来看,表中最重要基础的实行,最重要的是数据。其实表最基础是的架构,架构就是列的定义,而行只不过是列的数据体现形式。
所以Table在构造的时候,必须先定义列的集合,而Row的构造函数是protected internal的,意义是不能在外面被构造,必须通过Table来依据列的定义来构造。

下篇,我们将看到我们对Table的继承,发挥更多OO体现。

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值