/// <summary>
        /// DataTable分页
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="PageIndex">页索引,注意:从1开始</param>
        /// <param name="PageSize">每页大小</param>
        /// <returns></returns>
        public static DataTable GetPagedTable(DataTable dt, int currentPageIndex, int pageSize)
        {

            //1
            //判断当前索引
            if (currentPageIndex == )
                return dt;
            //从数据集合拷贝数据
            DataTable newdt = dt.Copy();
            //数据清空
            newdt.Clear();
            //开始数据索引 = 当前页-1 x 每页大小
            int rowbegin = (currentPageIndex - ) * pageSize;
            //结束数据索引 = 当前页 x 每页大小
            int rowend = currentPageIndex * pageSize;
            //开始数据索引 大于等于 当前数据集合大小
            if (rowbegin >= dt.Rows.Count)
                return newdt;
            //结束数据索引 大于 当前数据集合大小
            if (rowend > dt.Rows.Count)
                rowend = dt.Rows.Count;
            //遍历数据
            for (int i = rowbegin; i <= rowend - ; i++)
            {
                DataRow newdr = newdt.NewRow();
                DataRow dr = dt.Rows[i];
                foreach (DataColumn column in dt.Columns)
                {
                    newdr[column.ColumnName] = dr[column.ColumnName];
                }
                newdt.Rows.Add(newdr);
            }

            return newdt;


            //2
            //if (currentPageIndex == 0)
            //{
            //return dt;
            //}

            //DataTable newdt = dt.Clone();// dt.Copy();

            //int rowbegin = (currentPageIndex - 1) * pageSize;//当前页的第一条数据在dt中的位置
            //int rowend = currentPageIndex * pageSize;//当前页的最后一条数据在dt中的位置

            //if (rowbegin >= dt.Rows.Count)
            //{
            //    return newdt;
            //}

            //if (rowend > dt.Rows.Count)
            //{
            //    rowend = dt.Rows.Count;
            //}

            //DataView dv = dt.DefaultView;
            //for (int i = rowbegin; i <= rowend - 1; i++)
            //{
            //    newdt.ImportRow(dv[i].Row);
            //}

            //return newdt;

        }

        /// <summary>
/// DataTable 结构相同的比较
 /// 
 /// C# datatable comparison Same Different
 /// 涂聚文
 /// </summary>
 /// <param name="first"></param>
 /// <param name="second"></param>
 /// <returns></returns>
 public DataTable CompareTables(DataTable first, DataTable second)
 {
 first.TableName = "FirstTable";

 second.TableName = "SecondTable";

 //Create Empty Table

 DataTable table = new DataTable("Difference");

 try
 {
 //Must use a Dataset to make use of a DataRelation object
 using (DataSet ds = new DataSet())
 {
 ds.Tables.AddRange(new DataTable[] { first.Copy(), second.Copy() });

 //Get Columns for DataRelation

 DataColumn[] firstcolumns = new DataColumn[ds.Tables[].Columns.Count];


 for (int i = ; i < firstcolumns.Length; i++)
 {

 firstcolumns[i] = ds.Tables[].Columns[i];

 }


 DataColumn[] secondcolumns = new DataColumn[ds.Tables[].Columns.Count];

 for (int i = ; i < secondcolumns.Length; i++)
 {

 secondcolumns[i] = ds.Tables[].Columns[i];

 }


 //Create DataRelation

 DataRelation r = new DataRelation(string.Empty, firstcolumns, secondcolumns, false);

 ds.Relations.Add(r);

 //Create columns for return table

 for (int i = ; i < first.Columns.Count; i++)
 {

 table.Columns.Add(first.Columns[i].ColumnName, first.Columns[i].DataType);

 }


 //If First Row not in Second, Add to return table.

 table.BeginLoadData();



 foreach (DataRow parentrow in ds.Tables[].Rows)
 {

 DataRow[] childrows = parentrow.GetChildRows(r);

 if (childrows == null || childrows.Length == )

 table.LoadDataRow(parentrow.ItemArray, true);

 }

 table.EndLoadData();

 }
 }
 catch (Exception ex)
 {

 throw ex;

 }

 return table;
 }
USE pubs
GO --使用带有简单 CASE 函数的 SELECT 语句
SELECT Category =
CASE type
WHEN 'popular_comp' THEN 'Popular Computing'
WHEN 'mod_cook' THEN 'Modern Cooking'
WHEN 'business' THEN 'Business'
WHEN 'psychology' THEN 'Psychology'
WHEN 'trad_cook' THEN 'Traditional Cooking'
ELSE 'Not yet categorized'
END,
CAST(title AS varchar(25)) AS 'Shortened Title',
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price
COMPUTE AVG(price) BY type
GO --使用带有简单 CASE 函数和 CASE 搜索函数的 SELECT 语句
SELECT 'Price Category' =
CASE
WHEN price IS NULL THEN 'Not yet priced'
WHEN price < 10 THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END,
CAST(title AS varchar(20)) AS 'Shortened Title'
FROM titles
ORDER BY price
GO --使用带有 SUBSTRING 和 SELECT 的 CASE 函数
SELECT SUBSTRING((RTRIM(a.au_fname) + ' '+
RTRIM(a.au_lname) + ' '), 1, 25) AS Name, a.au_id, ta.title_id,
Type =
CASE
WHEN SUBSTRING(ta.title_id, 1, 2) = 'BU' THEN 'Business'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'MC' THEN 'Modern Cooking'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'PC' THEN 'Popular Computing'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'PS' THEN 'Psychology'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'TC' THEN 'Traditional Cooking'
END
FROM titleauthor ta JOIN authors a ON ta.au_id = a.au_id --

csharp: DataTable结构相同的比较的更多相关文章

  1. Fineui 根据datatable结构动态创建grid列,帮助类。动态绑定grid。

    public class FineuiHelper     {         /// <summary>         /// 动态创建Grid结构,在 Page_Init事件里执行( ...

  2. csharp: DataTable Rename ColumnName and remove Column

    enum ChangeNume { /// <summary> /// 简体 /// </summary> gbk=1, /// <summary> /// 英文 ...

  3. csharp: datatable get Column datatype or Column Name

    /// <summary> ///列表名 /// </summary> /// <param name="table"></param&g ...

  4. csharp: DataTable export to excel,word,csv etc

    http://code.msdn.microsoft.com/office/Export-GridView-to-07c9f836 https://exporter.codeplex.com/ htt ...

  5. 合并两个结构完全相同的DataTable

    两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到表3 1.规定公共的DataTable结 ...

  6. DataTable数据检索的性能分析(转寒江独钓)

    我们知道在.NET平台上有很多种数据存储,检索解决方案-ADO.NET Entity Framework,ASP.NET Dynamic Data,XML, NHibernate,LINQ to SQ ...

  7. list转datatable

    /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...

  8. List转换DataTable

    /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...

  9. 将C# dataTable 做为参数传入到存储过程

    1.list转换为DataTable(如果有需要) public static DataTable ListToDataTable<T>(List<T> entitys) { ...

随机推荐

  1. equals hashcode toString 方法的使用

    package com.wu.toString; import java.util.Date; import java.util.GregorianCalendar; /** * * @author ...

  2. Linux管理命令

    管理命令 用户管理: useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage 组管理: groupadd, groupdel, ...

  3. Ngnix,EA(Enterprise Architect)

    nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点 ...

  4. 非阻塞模式ServerSocketChannel 聊天室服务器端

    import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import ja ...

  5. .NET 海量数据并发处理

    .NET 海量数据并发处理 2013-02-19 10:27 提问者悬赏:10分 |XL码的小伙纸| 分类:C#/.NET| 浏览364次 百万级的数据并发处理,网站呈现数据..NET 开发,可能会使 ...

  6. python-使用字典使Fibonacci更有效率

    原代码: def fib(n): if n == 1: return 1 elif n == 2: return 2 else: return fib(n-1)+fib(n-2) 改进后: def f ...

  7. 解决分批次调用 jsonp 接口的 callback 会报错问题

    当我们分批次调用同一个jsonp接口时,会有一定机率同时调用,而jsonp的callback不支持同时调用, 会报错,所以当我们在分批次调用同一jsonp接口时,最好在callback后加个变量值,总 ...

  8. HDU - 1085 母函数

    年轻人的第一道母函数入门题 #include<bits/stdc++.h> using namespace std; const int maxn = 1000+2000+5000+1; ...

  9. ansys 有限元自学手册

    李兵.人邮2013.4 实体模型 –> 修正后划分 有限元网格 offset WP 偏移工作平面       模型的建立 将cT轮廓曲线 提取出来输入三维造型软件进行建模的方法,这种方法由于要对 ...

  10. .net mvc 用jquery ajax成功后页面跳转。

    $.ajax({ //url: 'http://192.168.0.102/webApiDemo/api/WebApiTest/PostStudentInforOnePara', //url: &qu ...