六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

怎么在Visual C# .NET中完成一個DataSet的不同記錄的選取

[摘要]怎樣在Visual C# .NET中實現(xiàn)一個DataSet的不同記錄的選取來自:Microsoft Knowledge Base Article – 326176,地址: http://suppor...
怎樣在Visual C# .NET中實現(xiàn)一個DataSet的不同記錄的選取
來自:Microsoft Knowledge Base Article – 326176,地址: http://support.microsoft.com/default.aspx?scid=kb;EN-US;326176

摘要:

這是一篇基礎性由淺入深的文章,這篇舉例說明了怎樣實現(xiàn)并怎樣使用一個DataSetHelper類,該類使用簡潔代碼來創(chuàng)建一個新的使某個DataTable對象指定的某列的的值具有唯一性的DataTable對象。

????? 為了實現(xiàn)這個目的,你可以使用SelectDistinct這個公開方法,也可以使用一個私有的通過比較可能包含NULL值(DBNull.Value)的字段的輔助方法。

?????? DataSetHelper類包含一個DataSet成員變量,你可以隨意的指定現(xiàn)有的一個DataSet對象作為這個DataSet成員的變量。如果這個成員變量是一個有效的DataSet,任一一個SelectDistinct方法創(chuàng)建的DataTable對象都能被填充到這個DataSet里。那樣,這個方法就請求返回涉及的DataTable對象。

要求:

下列清單列出的是推薦的硬件、軟件、網(wǎng)絡基礎設施和必須的補丁包:

(1)、Microsoft Windows XP, Windows 2000, or Windows NT 4.0 Service Pack 6a

(2)、Microsoft Visual Studio .NET

這篇文章假設你已熟悉下面的主題:

(1)、Visual C# .NET的語法

(2)、ADO.NET基本原理和語法

DataSetHelper 構造類:

(1)、開始Microsoft Visual Studio .NET。

(2)、在文件(File)菜單,點新建(New),和然后點擊項目(Project)。

(3)、在新建項目(New Project)對話框, 點擊Visual C#項目(Visual C# Projects)下的項目類型(Project Types),然后點擊類庫(Class Library)下的模板(Templates)。

(4)、在名稱欄里填上DataSetHelper。

(5)、用以下代碼替換類代碼:

public class DataSetHelper

{

???????? public DataSet ds;

???????? public DataSetHelper(ref DataSet DataSet)

???????? {

???????? ??????? ds = DataSet;

???????? }

???????? public DataSetHelper()

???????? {

???????? ??????? ds = null;

???????? }

}

你可以用2次重載的構造函數(shù)來創(chuàng)建一個帶或不帶一個有效的DataSet的實例類。因為類是涉及一個有效的DataSet,那么這個方法返回的DataTable對象這就自動的填充到這個DataSet里。

注: 增加下面代碼在代碼窗口的頂部:

using System.Data;

?

SelectDistinct 方法:

這個部分包含代碼為公開的SelectDistinct方法和私有的ColumnEqual輔助方法。

(1)、在類定義里增加下面的私有方法,該方法同樣被用在其他的DataSetHelper 文章里,它被用做來比較字段的值(包括NULL值) 。

private bool ColumnEqual(object A, object B)

{

???????? ?? // Compares two values to see if they are equal. Also compares DBNULL.Value.

??????? // Note: If your DataTable contains object fields, then you must extend this

??????? // function to handle them in a meaningful way if you intend to group on them.

???????????????????????????

??????? if ( A == DBNull.Value && B == DBNull.Value ) //? both are DBNull.Value

??????????? return true;

??????? if ( A == DBNull.Value B == DBNull.Value ) //? only one is DBNull.Value

??????????? return false;

??????? return ( A.Equals(B) );? // value type standard comparison

}

(2)、在類定義里增加下面的公開方法。這個方法復制你選定的字段的互異值到一個新的DataTable里。如果這個字段包含NULL值,在目標列里的一條記錄里也會包含NULL值。

public DataTable SelectDistinct(string TableName, DataTable SourceTable, string FieldName)

{??????

??????? DataTable dt = new DataTable(TableName);

??????? dt.Columns.Add(FieldName, SourceTable.Columns[FieldName].DataType);

???????????????????????????

??????? object LastValue = null;

??????? foreach (DataRow dr in SourceTable.Select("", FieldName))

??????? {

??????????? if (? LastValue == null !(ColumnEqual(LastValue, dr[FieldName])) )

??????????? {

??????????????? LastValue = dr[FieldName];

??????????????? dt.Rows.Add(new object[]{LastValue});

??????????? }

??????? }

??????? if (ds != null)

??????????? ds.Tables.Add(dt);

??????? return dt;

}

測試應用

(1)、保存并編譯你先前創(chuàng)建的這部分的DataSetHelper類,然后關閉解決方案。

(2)、在下面的步驟里在Visual Studio .NET里創(chuàng)建一個新的Visual C# Windows Form程序:

A、啟動 Visual Studio .NET;

B、在文件(File)菜單,點新建(New),和然后點擊項目(Project)。

C、在新建項目(New Project)對話框, 點擊Visual C#項目(Visual C# Projects)下的項目類型(Project Types),然后點擊Windows應用程序(Windows Application)下的模板(Templates)。

(3)、在解決方案資源管理器里右擊解決方案,然后點擊添加現(xiàn)有項目,加入DataSetHelper這個項目。

(4)、在項目菜單里,點擊項目依賴項(Add Reference)。

(5)、在項目依賴項對話框里,選中依賴項(Projects)標簽,然后增加這個DataSetHelper項目和這個Windows Form程序的關系。

(6)、在窗口設計界面里,從工具箱里拖拉一個Button控件和一個DataGrid控件到窗體上,指定這個按鈕名為btnSelectDistinct,繼續(xù)保持DataGrid控件的默認名字(DataGrid1)。

(7)、窗體代碼界面里,在代碼窗口頂部增加下面的引用聲明:

using System.Data;

(8)、在窗體的定義增加下面的變量聲明:

DataSet ds;

DataSetHelper.DataSetHelper dsHelper;

(9)、增加下面的構造代碼(在the InitializeComponent();的下面):

ds = new DataSet();

dsHelper = new DataSetHelper.DataSetHelper(ref ds);

?

// Create source table

DataTable dt = new DataTable("Orders");

dt.Columns.Add("EmployeeID", Type.GetType("System.String"));

dt.Columns.Add("OrderID", Type.GetType("System.Int32"));

dt.Columns.Add("Amount", Type.GetType("System.Decimal"));

???????????????????????????

dt.Rows.Add(new object[] {"Sam", 5, 25.00});

dt.Rows.Add(new object[] {"Tom", 7, 50.00});

dt.Rows.Add(new object[] {"Sue", 9, 11.00});

dt.Rows.Add(new Object[] {"Tom", 12, 7.00});

dt.Rows.Add(new Object[] {"Sam", 14, 512.00});

dt.Rows.Add(new Object[] {"Sue", 15, 17.00});

dt.Rows.Add(new Object[] {"Sue", 22, 2.50});

dt.Rows.Add(new object[] {"Tom", 24, 3.00});

dt.Rows.Add(new object[] {"Tom", 33, 78.75});

?

ds.Tables.Add(dt);

(10)、增加下面的代碼在btnSelectDistinct.Click的事件里:

dsHelper.SelectDistinct("DistinctEmployees", ds.Tables["Orders"], "EmployeeID");

dataGrid1.SetDataBinding(ds, "DistinctEmployees");

(11)、運行這個程序,點擊按鈕一次,觀察DataGrid綁定上從代碼生成的表和數(shù)據(jù)。

注意:你只能點擊btnSelectDistinct一次。如果你點擊這個按鈕超過一次的話,你將收到一條錯誤信息——你2次都在嘗試添加同一個表。

進一步的想法:

你用這個功能只能篩選一個字段為互異,可是你可以類似性的擴展到多個字段。做為另一種選擇,你可以調(diào)用CreateGroupByTable、InsertGroupByInto, 和 SelectGroupByInto 方法,通過使用GROUP BY-type的函數(shù)得到同樣的結果。

?





主站蜘蛛池模板: 欧美一区二区三区不卡 | 日韩一区二区精品久久高清 | 日韩欧美在线观看综合网另类 | 午夜激爽毛片在线看 | 日韩视频专区 | 亚洲成人社| 午夜免费视频网站 | 天天干天天草 | 欧美亚洲国产精品久久久久 | 欧美性色黄在线视频 | 情侣视频精品免费的国产 | 天天曰夜夜曰 | 天天爽天天色 | 鸥美性生交xxxxx久久久 | 日韩精品一 | 日本天堂免费观看 | 青青青青手机在线观看 | 四虎在线永久视频观看 | 日韩在线观看精品 | 亚洲综合色就色手机在线观看 | 亚洲黄页网站 | 日韩大片 | 日本大学生免费一级一片 | 亚洲高清二区 | 软萌小仙自慰喷白浆 | 欧美一级鲁丝片免费看 | 青青青线在线观看 | 四虎永久免费观看 | 色悠久久久久综合网伊人男男 | 亚洲午夜综合网 | 婷婷六月天在线 | 日韩精品成人a在线观看 | 色综合久久精品中文字幕 | 午夜影院在线免费观看 | 最新精品亚洲成a人在线观看 | 性生免费视频 | 特级做a爰片毛片免费看 | 日本污全彩肉肉无遮挡彩色 | 天天拍天天射 | 色综合欧美 | 日日摸夜夜摸狠狠摸日日碰夜夜做 |