datatable数据类型方法

2023-05-16

      
本文章已收录于:

[+]

  1. Datatable数据类型介绍
    1. 简介
    2. 方法介绍
      1. 用法一声明一个datatable类型
      2. 用法二合并两个结构相同的datatable
      3. 用法三datatable中数据的计算
      4. 用法四两种遍历datatable的方法

Datatable数据类型介绍

简介:

这里介绍个在开发中经常用到的数据类型,数据类型为datatable。从数据库中查出的数据存放在datatable,但是很多情况下需要对查出的数据处理,这就需要积累些datatable方法,这样开发会更快。

方法介绍

用法一、声明一个datatable类型

通过声明自己创建一个datatable类型,并填充数据

[csharp] view plain copy print ?
  1. DataTable dt = newDataTable();  
  2.   
  3.          dt.Columns.Add("Username");  
  4.   
  5.          dt.Columns.Add("Level"typeof(int));  
  6.   
  7.   
  8.   
  9.          dt.Rows.Add("John", 1);  
  10.   
  11.          dt.Rows.Add("Cait", 2);  
  DataTable dt = newDataTable();

           dt.Columns.Add("Username");

           dt.Columns.Add("Level", typeof(int));

 

           dt.Rows.Add("John", 1);

           dt.Rows.Add("Cait", 2);


如果datatable已经存在了创建一个同结构的

[csharp] view plain copy print ?
  1. DataTable dtNew = dt.Clone();  
DataTable dtNew = dt.Clone();

带着数据:

 

[csharp] view plain copy print ?
  1. DataTable dtNew = dt.Copy();  
 DataTable dtNew = dt.Copy();

用法二、合并两个结构相同的datatable

有的时候是分批来的要一起显示到通过控件中(比如gridview控件)

直接合两个表格

[csharp] view plain copy print ?
  1. DataTable dt1 = newDataTable();  
  2.   
  3. DataTable dt2 = newDataTable();  
  4.   
  5. dt1.Merge(dt2);  
  DataTable dt1 = newDataTable();

  DataTable dt2 = newDataTable();

  dt1.Merge(dt2);


但有的时候需要经过遍历按照条件把一个表中的某些行添加到另一张表中

[csharp] view plain copy print ?
  1. foreach (DataRow dr in dt1.Rows)  
  2.   
  3.             {  
  4.   
  5.                 if (Convert.ToInt32(dr["Level"] )== 1)  
  6.   
  7.                 {  
  8.   
  9.                    dt2.Rows.Add(dr.ItemArray);  
  10.   
  11.                 }  
  12.   
  13.             }  
foreach (DataRow dr in dt1.Rows)

            {

                if (Convert.ToInt32(dr["Level"] )== 1)

                {

                   dt2.Rows.Add(dr.ItemArray);

                }

            }

用法三、datatable中数据的计算

有的时候需要对datatable中的数据进行计算,比如

聚合计算:

[csharp] view plain copy print ?
  1. DateTime StartTime = Convert.ToDateTime((dt.Compute("min(DateMonth)"string.Empty)));  
  2.   
  3. DateTime EndTime = Convert.ToDateTime((dt.Compute("max(DateMonth)"string.Empty)));  
DateTime StartTime = Convert.ToDateTime((dt.Compute("min(DateMonth)", string.Empty)));

DateTime EndTime = Convert.ToDateTime((dt.Compute("max(DateMonth)", string.Empty)));

这里是对时间类型类进行聚合得到最大时间和最小时间。

数据行过滤:

[csharp] view plain copy print ?
  1. DataTable dt = newDataTable();  
  2.   
  3.  dt.Columns.AddRange(newDataColumn[] { newDataColumn("name"typeof(string)),  
  4.   
  5.                                          newDataColumn("sex"typeof(string)),  
  6.   
  7.                                          newDataColumn("score"typeof(int))  
  8.   
  9. });  
  10.   
  11.            dt.Rows.Add(newobject[] { "李四""男", 20 });  
  12.   
  13.            dt.Rows.Add(newobject[] { "张三""男", 1 });  
  14.   
  15.            dt.Rows.Add(newobject[] { "张三""男", 4 });  
  16.   
  17.            dt.Rows.Add(newobject[] { "李四""男", 100 });  
  18.   
  19.            dt.Rows.Add(newobject[] { "李四""女", 90 });  
  20.   
  21.            dt.Rows.Add(newobject[] { "王五""女", 77 });  
DataTable dt = newDataTable();

 dt.Columns.AddRange(newDataColumn[] { newDataColumn("name", typeof(string)),

                                         newDataColumn("sex", typeof(string)),

                                         newDataColumn("score", typeof(int))

});

           dt.Rows.Add(newobject[] { "李四", "男", 20 });

           dt.Rows.Add(newobject[] { "张三", "男", 1 });

           dt.Rows.Add(newobject[] { "张三", "男", 4 });

           dt.Rows.Add(newobject[] { "李四", "男", 100 });

           dt.Rows.Add(newobject[] { "李四", "女", 90 });

           dt.Rows.Add(newobject[] { "王五", "女", 77 });


数据过滤的到行,

[csharp] view plain copy print ?
  1. for (int i = 0; i < dtName.Rows.Count; i++)  
  2.   
  3.             {  
  4.   
  5.                 DataRow[] rows = dt.Select("name=李四");  
  6.   
  7. }  
for (int i = 0; i < dtName.Rows.Count; i++)

            {

                DataRow[] rows = dt.Select("name=李四");

}

数据列过滤

[csharp] view plain copy print ?
  1. DataTable dtName = dt.DefaultView.ToTable(true"name""sex");  
DataTable dtName = dt.DefaultView.ToTable(true, "name", "sex");

用法四:两种遍历datatable的方法

[csharp] view plain copy print ?
  1. foreach (DataRow dr in dt2.Rows)  
  2.   
  3.             {  
  4.   
  5.                 Console.Write(dr["Username"]);  
  6.   
  7.                 Console.Write(dr["Level"]);  
  8.   
  9.                 Console.WriteLine();            
  10.   
  11.    
  12.   
  13.             }  
foreach (DataRow dr in dt2.Rows)

            {

                Console.Write(dr["Username"]);

                Console.Write(dr["Level"]);

                Console.WriteLine();          

 

            }

[csharp] view plain copy print ?
  1. for (int i = 0; i < dt1.Rows.Count; i++)  
  2.   
  3.             {  
  4.   
  5.                dt1[i][""]  
  6.   
  7.             }  
for (int i = 0; i < dt1.Rows.Count; i++)

            {

               dt1[i][""]

            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

datatable数据类型方法 的相关文章

  • 将DataTable批量插入postgreSQL表中

    在 SQL 中 我们执行类似的操作来批量插入数据表 SqlBulkCopy copy new SqlBulkCopy sqlCon copy DestinationTableName strDestinationTable copy Wri
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • 在 Select(DropDown) 更改事件上重新初始化 Jquery DataTable

    我正在使用 Jquery UI DataTable 它被填充select DropDown change事件 在PageLoad没关系 当我表演时dropdown change event DataTable is Reinitialize
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • data.table 相当于 dplyr::filter_at

    考虑数据 library data table library magrittr vec1 lt c Iron Copper vec2 lt c Defective Passed Error set seed 123 a1 lt sampl
  • 我可以在 data.table 连接中访问“j”中重复的列名称吗? [复制]

    这个问题在这里已经有答案了 如果我尝试连接两个具有相同列名的 data tables 那么 1附加到其中一个名称 但我似乎无法访问该名称j的一部分DT 表达 Example DT1 data table name letters value
  • 如何在 XAML 和 C# 中将字符串列表显示为 DataGrid(表)

    我已经在 SO 上潜伏了很长时间 直到最近才决定建立一个帐户 我花了很多时间试图解决这个我一直没有询问的问题 但我就在这里 我正在努力实现的目标 我有一个字符串列表 例如 Mango Banana Melon 我们称之为水果 我想将其显示为
  • R Shiny - 使用 DataTable 移动列名称

    我有一个非常复杂的闪亮代码 其中有几个面板和这些面板内的几个表格 启动应用程序时 列名称与列值正确对齐 但是 一旦我更改应用程序表格下的页码 列名称就会移动到左侧 而值仍保留在中间 如何强制应用程序使列名称与列值对齐 一个可重现的例子 li
  • data.table 的包装函数

    我有一个已经使用 data frame 上下文编写的项目 为了缩短计算时间 我尝试利用 data table 的速度 我的方法是构造包装函数 读取帧 将它们转换为表 进行计算 然后转换回帧 这是一个简单的例子 FastAgg lt func
  • 行方向变异的有效方法

    我有两个数据框 dfUsers and purchases使用以下代码生成 set seed 1 library data table dfUsers lt data table user letters 1 5 startDate sam
  • data.table 查找值并翻译

    像许多人一样 我是 R 新手 我有一个大数据集 500M 行 我已将其读取到 data table 中logStats其中有如下数据 head logStats 15 time pid mean 1 2014 03 10 00 00 00
  • 如何在函数和循环中使用 data.table?

    在评估效用时data table vs dplyr 一个关键因素是在函数和循环中使用它的能力 为此 我修改了本文中使用的代码片段 data table 与 dplyr 一个可以做得很好而另一个不能做或做得很差吗 https stackove
  • R data.table:在当前测量之前对出现次数进行计数

    我有一组在几天内进行的测量结果 测量次数通常为 4 任何测量中可以捕获的数字范围为 1 5 在现实生活中 给定测试集 范围可能高达 100 或低至 20 我想每天计算每个值在当天之前发生的次数 让我用一些示例数据来解释 test data
  • 跳过 data.table 中的 NA

    我想用data table但想跳过计算j部分如果by对应于缺失 NA 这是一个示例 data table library data table DT lt data table y 10 g c 1 1 1 2 2 2 2 2 NA NA
  • data.table 和 pmin 带有 na.rm=TRUE 参数

    我正在尝试使用 pmin 函数和 data table 计算行间的最小值 类似于帖子data table 中的逐行操作和更新 https stackoverflow com questions 16860200 row by row ope
  • 由于 NA,无法对数据帧进行子集化(过滤)

    为什么在 dplyr 下面的代码中filter不返回与基本 R 子集相同的 data frame 事实上 它们都没有按预期工作 我想删除观察 行 同时 b 1 AND c 1 也就是说 我只想删除第三行 require dplyr df l
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • 如何在 dataTable.js 中转置行和列

    我想在行而不是列中显示我的数据 转置 你可以在这里看到我的例子 var dataSet Tiger Nixon System Architect Edinburgh 5421 2011 04 25 320 800 Garrett Winte

随机推荐

  • C++中重写与覆写(虚函数virtual)的区别

    本文章已收录于 xff1a 虚函数的情况下调用成员函数时调用的是指向对象的所属类的成员函数例子中为apple class fruit public void func printf 34 fruit n 34 virtual void vf
  • duilib入门问题集

    引入duilib时 请确保引入头文件开始时先引入COMUTIL H头文件 include 34 COMUTIL H 34 include 34 UIlib h 34 duilib基本程序结构 在stdafx h文件中加入 cpp view
  • C#中常用的几种读取XML文件的方法

    XML文件是一种常用的文件格式 xff0c 例如WinForm里面的app config以及Web程序中的web config文件 xff0c 还有许多重要的场所都有它的身影 Xml是Internet环境中跨平台的 xff0c 依赖于内容的
  • C++(1) 指针 new 和delete

    1 概念 new typeName pointer name 61 new typeName delete delete pointer name 注意 xff1a 1 new之后要判断 xff0c 指针是否为NULL xff0c 内存被耗
  • C++的new

    C 43 43 中的new其实是一个很糊弄人的术语 xff0c 它有两种不同的含义 xff0c new运算符 xff08 new operator xff09 和new函数 xff08 operator new xff09 xff0c 值得
  • s32ds

    S32DS使用复位窗口的方式还原 xff1a 在S32DS菜单栏 Windows Perspective Reset Perspective 添加组件 xff0c 自动生成代码 xff1a
  • 在C#中使用SerialPort类实现串口通信 遇到多线程问题

    在C 中使用SerialPort类实现串口通信 遇到多线程问题 在C 中使用SerialPort类实现串口通信 2009年11月01日 星期日 10 03 在 NET work 2 0中提供了SerialPort类 xff0c 该类主要实现
  • [C#]委托和事件(详细讲解)

    引言 委托 和 事件在 Net Framework中的应用非常广泛 xff0c 然而 xff0c 较好地理解委托和事件对很多接触C 时间不长的人来说并不容易 它们就像是一道槛儿 xff0c 过了这个槛的人 xff0c 觉得真是太容易了 xf
  • 连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决

    C 使用oledb连接excel执行Insert Into语句出现 操作必须使用一个可更新的查询 的解决办法 我发生错误时的环境 xff1a Windows 7 xff0c Framework 4 0 xff0c Microsoft Off
  • 操作excel的一些方法

    更改方法 xff1a public void UpdateExcelFile string filePath string prjId List lt string gt updateColNames List lt string gt c
  • C#中如何创建文件夹

    C 中对文件夹操作需要用到Directory Class 其中提供了创建 删除 移动 枚举等静态方法 该类不能被继承 以下代码实现了创建文件夹 1 2 3 4 if Directory Exists sPath
  • C#获取当前程序运行路径的方法集合

    获取当前进程的完整路径 xff0c 包含文件名 进程名 string str 61 this GetType Assembly Location result X xxx xxx xxx exe exe文件所在的目录 43 exe文件名 获
  • 怎么将excel数据导入到datagridview中

    本人小白 xff0c 想要实现EXCEL文件中的数据导入到datagridview中 xff0c EXCEL中的数据是多行多列 xff0c 行数和列数不确定 xff0c 如何实现导入到datagridview中显示 xff0c 具体的界面如
  • 总结了C#中string.format用法。分享给大家供大家参考。具体分析如下:

    String Format 方法的几种定义 xff1a String Format String Object 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项 String Format String O
  • c#中out、ref和params的用法与区别

    ref和out都对函数参数采用引用传递形式 不管是值类型参数还是引用类型参数 xff0c 并且定义函数和调用函数时都必须显示生命该参数为 ref out形式 两者都可以使函数传回多个结果 两者区别 xff1a 两种参数类型的设计思想不同 x
  • C#代码创建Xml文件

    扩展标记语言XML xff08 eXtensible Markup Language xff09 xff0c 是由W3C组织制定的 做为用于替代HTML语言的一种新型的标记语言 xff0c XML内部有着很多基本标准 xff0c XML就是
  • tftp使用

    tftp服务器路径 xff1a tftp使用命令 xff1a root 64 iTOP 4412 tftp g l module test ko 169 254 231 181 3356 761790 dm96 TxRound 0 for
  • 获取某一扩展名的文件集合

    获取某一扩展名的文件集合 lt summary gt lt param name 61 34 dictoryName 34 gt 目录名 lt param gt lt param name 61 34 fiterName 34 gt 扩展名
  • 使用XmlTextWriter生成XML文件的方法

    使用XmlTextWriter生成XML文件的方法 项目兼容需要生成一系列的xml文件 xff0c 总结了下XML文件的生成基本方式 项目兼容需要生成一系列的xml文件 xff0c 总结了下XML文件的生成基本方式 XmlTextWrite
  • datatable数据类型方法

    本文章已收录于 xff1a 43 Datatable数据类型介绍 简介方法介绍 用法一声明一个datatable类型用法二合并两个结构相同的datatable用法三datatable中数据的计算用法四两种遍历datatable的方法 Dat