C#動態操作DataTable(新增行、列、查詢行、列等)

public void CreateTable()
??????? {
??????????? //創建表
??????????? DataTable dt = new DataTable();
???????????
??????????? //1、添加列
??????????? dt.Columns.Add("Name", typeof(string)); //數據類型為 文本
//2、通過列架構添加列
??????????? DataColumn age = new DataColumn("Age", typeof(Int32));?? //數據類型為 整形
??????????? DataColumn Time = new DataColumn("Time", typeof(DateTime)); //數據類型為 時間
??????????? dt.Columns.Add(age);
??????????? dt.Columns.Add(Time);
//1、添加空行
??????????? DataRow dr1 = dt.NewRow();
??????????? dt.Rows.Add(dr1);
//2、添加空行
??????????? dt.Rows.Add();
//3、添加數據行
??????????? DataRow dr2 = dt.NewRow();
??????????? dr2[0] = "張三"; //通過索引賦值
??????????? dr2[1] = 23;
??????????? dr2["Time"] = DateTime.Now;//通過名稱賦值
??????????? dt.Rows.Add(dr2);
//4、通過行框架添加
??????????? dt.Rows.Add("李四",25,DateTime.Now);//Add你們參數的數據順序要和dt中的列順對應
}
方法二:為已有DateTable添加一新列,其值可設為默認值,也可設這列不可為空。
public void CreateTable(DataTable vTable)
??????? {
??????????? //為已有DataTable添加一新列
??????????? DataColumn dc1 = new DataColumn("Tol", typeof(string));
??????????? vTable.Columns.Add(dc1);
//添加一新列,其值為默認值
??????????? DataColumn dc2 = new DataColumn("Sex", typeof(string));
??????????? dc2.DefaultValue = "男";
??????????? dc2.AllowDBNull = false;//這在創建表的時候,起作用,在為已有表新增列的時候,不起作用
??????????? vTable.Columns.Add(dc2);
??????? }
方法三:篩選DataTable中的數據,使用 Select()方法,把賽選結果可以保存到 DataRow[] drArr; 數據里面,也可以另存為一個新DataTable
public void SelectRowDataTable()
??????? {
??????????? DataTable dt = new DataTable();//假設dt是由"SELECT C1,C2,C3 FROM T1"查詢出來的結果
??????????? for (int i = 0; i < dt.Rows.Count; i++)
??????????? {
??????????????? if (dt.Rows[i]["C1"].ToString() == "abc")//查詢條件
??????????????? {
??????????????????? //進行操作
??????????????? }
??????????? }
??????????? //但這種做法用一兩次還好說,用多了就累了。那有沒有更好的方法呢?就是dt.Select(),上面的操作可以改成這樣:
DataRow[] drArr = dt.Select("C1='abc'");//查詢(如果Select內無條件,就是查詢所有的數據)
//還可以這樣操作:
??????????? DataRow[] drArr1 = dt.Select("C1 LIKE 'abc%'");//模糊查詢(如果的多條件篩選,可以加 and 或 or )
??????????? DataRow[] drArr2 = dt.Select("'abc' LIKE C1 + '%'", "C2 DESC");//另一種模糊查詢的方法
??????????? DataRow[] drArr3 = dt.Select("C1='abc'", "C2 DESC");//排序
//問題又來了,如果要把DataRow賦值給新的DataTable,怎么賦值呢?你可能會想到:
??????????? DataTable dtNew1 = dt.Clone();
??????????? for (int i = 0; i < drArr.Length; i++)
??????????? {
??????????????? dtNew1.Rows.Add(drArr[i]);
??????????? }
???????????
??????????? //但這樣程序就會出錯,說該DataRow是屬于其他DataTable的,那要怎么做呢?很簡單,這樣就可以解決了:
??????????? DataTable dtNew2 = dt.Clone();
??????????? for (int i = 0; i < drArr.Length; i++)
??????????? {
??????????????? dtNew2.ImportRow(drArr[i]);//ImportRow 是復制
??????????? }
??????? }
方法四:對DataTable篩選指定字段,并保存為新表
public void SelectColumnDataTable(DataTable dt)
??????? {
??????????? //對DataTable篩選指定字段,并保存為新表。這些字段,確保dt中存在,否則會報錯誤
DataTable dtNew = dt.DefaultView.ToTable(false, new string[] { "列名", "列名", "列名" });
??????? }
方法五:對DataTable進行排序設置(sort)
public void SortDataTable(DataTable dt)
??????? {
??????????? dt.DefaultView.Sort = "id desc";//重新設置排序
??????????? DataTable dtNew = dt.DefaultView.ToTable(); //保存在一張新表中
??????? }

轉載于:https://www.cnblogs.com/hu16683845/p/9910269.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450804.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450804.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450804.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用IntelliJ IDEA 配置Maven(入門)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 下載Maven 官方地址&#xff1a;http://maven.apache.org/download.cgi 解壓并新建一個本地倉庫文件夾 2.配置本地倉庫路徑 3.配…

[算法]不使用*、/、+、-、%操作符求一個數的1/3

摘要&#xff1a;算法一直是程序員進階的一道龍門&#xff0c;通常算法都是為了更高效地解決問題而創造的&#xff0c;但也有的只是出于學術性&#xff0c;并不在意其實際意義。這是近日在國外技術問答網站stackoverflow的一個熱門問題&#xff0c;不知道你能給出幾種解決方法&…

2022屆互聯網秋招備戰

文章目錄1、何為秋招&#xff1f;1.1應屆生身份1.2秋招、春招、校招1.3、社招、海投2.秋招信息如何獲取&#xff1f;3、如何備戰秋招&#xff1f;3.1、簡歷&#xff08;ps做簡歷&#xff09;3.2、筆試準備3.3、面試準備4、日常實習和暑假實習&#xff1f;1、春招≠暑期實習2、什…

php 兩變量值互換 方法

//方法一&#xff1a;$a "abc";$b"def";$a $a^$b;$b $b^$a;$a $a^$b;//方法二&#xff1a;list($a, $b) array($b, $a);//方法三&#xff1a;$a $a . $b;$b strlen( $b );$b substr( $a,0,(strlen($a)- $b ));$a substr( $a, strlen($b));//方法四&…

MySQL5.7 group by新特性,報錯1055

項目中本來使用的是mysql5.6進行開發&#xff0c;切換到5.7之后&#xff0c;突然發現原來的一些sql運行都報錯&#xff0c;錯誤編碼1055&#xff0c;錯誤信息和sql_mode中的“only_full_group_by“關&#xff0c;到網上看了原因&#xff0c;說是mysql5.7中only_full_group_by這…

IDEA中多行注釋及取消注釋快捷鍵

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、一次性添加多行注釋的快捷鍵 首先選中要注釋區域&#xff0c;然后 ctrl/ 這個是多行代碼分行注釋&#xff0c;每行一個注釋…

為什么程序員不擅長估算時間?

摘要&#xff1a;時間估算是困難的&#xff0c;每一個程序員都有一個現實的估計區間&#xff0c;低于這個區間的估計意味著&#xff08;構件&#xff0c;測試&#xff0c;檢查代碼的&#xff09;時間開銷被低估了&#xff0c;超過這個區間的估計意味著這個任務太大而很難預估。…

red hat enterprise linux 7關閉防火墻的方法

2019獨角獸企業重金招聘Python工程師標準>>> red hat enterprise linux 7發布后&#xff0c;發現防火墻也變了&#xff0c;如何關閉防火墻呢&#xff0c;下面是方法 1.查看firewall的狀態 [rootsztech7 ~]# systemctl status firewalld firewalld.service - firewal…

IOS —— 網絡那些事(上) - http協議

作為一名并不太合格的程序員&#xff0c;今天要分享學習的成果&#xff0c;竟然講的是網絡相關HTTP協議的事情。&#xff08;也算是復習了&#xff09; 乍看HTTP協議的內容著實是十分復雜的&#xff0c;涉及到十分多互聯網"底層"框架的東西。今天就先撇開這部分詳細內…

【最新版】Java速成路線(急于找工作!)

文章目錄計算機網絡分層結構TCP/UDPHTTP/HTTPS狀態碼Cookie 和 SessionURI和URL操作系統線程和進程數據結構和算法數據結構算法設計模式&#xff08;23種&#xff09;單例工廠代理適配器觀察者模板實操工具Git/SVNMaven/GradleLinux基本操作NginxELKpostmanJAVA基礎語言基礎JVM…

Java Web Start實例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 JWS讓用戶可以下載服務器端的Java Application到本機運行&#xff0c;并且沒有安裝、配置等繁瑣的操作JWS的運行原理&#xff1a;瀏覽器…

老派程序員——徒手實現偉大成就

摘要&#xff1a;本文介紹了三位非常著名的程序員&#xff1a;Ken Thompson,Joe Armstrong 和 Jamie Zawinski&#xff0c;他們是如何發明一門新語言&#xff0c;他們開發軟件時會像我們一樣使用當今流行的開發工具嗎&#xff1f;當讀Peter Seibel的精彩著作《編程人生:15位軟件…

互聯網大廠項目研發流程

文章目錄階段一&#xff1a;階段二&#xff1a;階段三&#xff1a;階段四&#xff1a;階段五&#xff1a;開發人員&#xff1a;測試人員&#xff1a;設計師&#xff1a;階段六&#xff1a;階段七&#xff1a;總結&#xff1a;本文章學習自&#xff1a;https://www.bilibili.com…

centos常見錯誤 Failed to set locale, defaulting to C

錯誤描述&#xff1a; 當在centos中使用yum命令時&#xff0c;輸出錯誤&#xff1a; [rootlocalhost yum.repos.d]# yum list |grep prceFailed to set locale, defaulting to C 用locale檢測&#xff0c;出現如下提示&#xff1a; rootlocalhost yum.repos.d]# localelocale: …

圖片上傳知識點梳理

在日常項目開發中&#xff0c;圖片上傳是一個十分常見的場景。而現在的各種UI框架都提供了自己的上傳組件&#xff0c;網上第三方的上傳組件也多如牛毛。可能你早已習慣了直接使用這些現成的組件&#xff0c;然而對于其具體的實現&#xff0c;卻并未深入解析。本文將通過簡單的…

解決 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯&#xff1a;Caused by: java.lang.IllegalArgumentException: Repository interface must not be null on initialization! Cause…

【狂神說】JVM

文章目錄1.JVM的位置2.JVM的體系結構3.類加載器4.雙親委派機制&#xff08;重要&#xff09;5.沙箱安全機制(了解)6.native&#xff08;核心&#xff09;7.PC寄存器&#xff08;了解&#xff09;8.方法區9.棧10.三種JVM11.堆&#xff08;Heap&#xff09;12.新生區、老年區13.永…

我們真的需要統一的編程規范?

摘要&#xff1a;仁者見仁智者見智&#xff0c;編碼風格的不同&#xff0c;對項目也會有不同的影響&#xff0c;統一的編碼規范有益于項目的維護。俗話說&#xff0c;沒有規矩不成方圓&#xff0c;在2004年&#xff0c;UNIX創始人之一的Ken Arnold就發表了一篇很幽默文章&#…

百度云重磅發布ABC 3.0 尹世明如何詮釋百度云的“新”打法

雷鋒網9月4日消息&#xff0c;2018百度云智峰會正式召開&#xff0c;百度總裁張亞勤發表題為《新技術驅動&#xff0c;全面進入Cloud2.0》的演講并表示&#xff0c;經歷了PCClient/Server到MobileCloud 1.0&#xff0c;再到如今的AICloud 2.0過程&#xff0c;新技術推動云計算產…

EcmaScript對象克隆之謎

先談談深拷貝 如何在js中獲得一個克隆對象&#xff0c;可以說是喜聞樂見的話題了。相信大家都了解引用類型與基本類型&#xff0c;也都知道有種叫做深拷貝的東西&#xff0c;傳說深拷貝可以獲得一個克隆對象&#xff01;那么像我這樣的萌新自然就去學習了一波&#xff0c;我們能…