VB.NET——泛型集合的使用
'********************************************** '說明:將DataTable轉化為泛型集合 '名稱空間:DAL '機器名稱:曉 '建立日期:2015/2/23 11:13:28 '作者:鄭浩 '版本號:V1.00 '********************************************** Imports System.Collections.Generic '增加泛型的名稱空間 Imports System.Reflection '引入反射:為了使用PropertyInfo Public Class ConvertGenericsHelper '將datatable轉化為泛型集合 Public Shared Function convertToList(Of T As {New})(ByVal dt As DataTable) As IList(Of T) '注意:convertToList(Of T As {New}) 這裡的new是用來約束T的,必須有,不然new T的時候會出現錯誤 Dim myList As New List(Of T) '定義最終返回的集合 Dim myTpye As Type = GetType(T) '得到實體類的型別名 Dim dr As DataRow '定義行集 Dim tempName As String = String.Empty '定義一個臨時變數 '遍歷DataTable的所有資料行 For Each dr In dt.Rows Dim myT As New T '定義一個實體類的物件 Dim propertys() As PropertyInfo = myT.GetType().GetProperties() '定義屬性集合 Dim Pr As PropertyInfo '遍歷該物件的所有屬性 For Each Pr In propertys tempName = Pr.Name '將屬性名稱賦值給臨時變數 '檢查DataTable是否包含此列(列名==物件的屬性名) If (dt.Columns.Contains(tempName)) Then '將此屬性與datatable裡的列明比較,檢視datatable是否包含此屬性 '判斷此屬性是否有Setter If (Pr.CanWrite = False) Then '判斷此屬性是否可寫,如果不可寫,跳出本次迴圈 Continue For End If Dim value As Object = dr(tempName) '定義一個物件型的變數來儲存列的值 If (value.ToString <> DBNull.Value.ToString()) Then '如果非空,則賦給物件的屬性 Pr.SetValue(myT, value, Nothing) '在執行期間,通過反射,動態的訪問一個物件的屬性 End If End If Next myList.Add(myT) '新增到集合 Next Return myList '返回實體集合 End Function End Class
D層程式碼
U層程式碼'********************************************** '說明:利用泛型集合來檢視學生餘額 '名稱空間:DAL '機器名稱:曉 '建立日期:2015/2/23 11:27:21 '作者:鄭浩 '版本號:V1.00 '********************************************** Imports IDAL Imports System.Data.SqlClient Public Class SqlserverCheckBalanceDAL : Implements ICheckBalance Public Function ICheckBalance(studentinfo As Entity.EN_StudentInfo) As List(Of Entity.EN_StudentInfo) Implements ICheckBalance.ICheckBalance Dim sql As String sql = "select * from ZH_StudentInfo where CardNo = @CardNo" Dim paras As SqlParameter() = {New SqlParameter("CardNo", studentinfo.CardNo)} Dim dt As New DataTable '儲存轉換後的泛型集合 Dim myList As New List(Of Entity.EN_StudentInfo) dt = SqlHelper.SqlHelper.ExecSelect(sql, CommandType.Text, paras) '先判斷dt是否為空 If dt.Rows.Count > 0 Then '將dt轉換為泛型集合 myList = ConvertGenericsHelper.convertToList(Of Entity.EN_StudentInfo)(dt) Return myList Else Return Nothing End If End Function End Class
’直接給文字框賦值
Dim studentinfo As New Entity.EN_StudentInfo studentinfo.CardNo = Trim(txtCardNo.Text) Dim dt As New List(Of Entity.EN_StudentInfo) Dim checkbalance As New Facade.FacadeCheckBalance dt = checkbalance.CheckBalance(studentinfo) txtClass.Text = dt(0).Classes '0表示泛型集合中的第一個實體 txtStudentNo.Text = dt(0).StudentNo txtName.Text = dt(0).StudentName txtSex.Text = dt(0).Sex txtStatus.Text = dt(0).Status txtGrade.Text = dt(0).Grade txtBalance.Text = dt(0).Cash txtExplain.Text = dt(0).Explain End Sub
’和DataGridView控制元件互動
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim studentinfo As New Entity.EN_StudentInfo
studentinfo.CardNo = Trim(txtCardNo.Text)
Dim dt As New List(Of Entity.EN_StudentInfo)
Dim checkbalance As New Facade.FacadeCheckBalance
dt = checkbalance.CheckBalance(studentinfo)
dgvRecord.DataSource = dt
dgvRecord.AutoGenerateColumns = True
dgvRecord.Columns(1).HeaderText = "卡號"
End Sub
相關推薦
VB.NET——泛型集合的使用
因為我們每次和資料庫互動都需要轉換為泛型,所以將這個方法抽象出來,放在D層一遍呼叫,和sqlhelper類的作用相似'********************************************** '說明:將DataTable轉化為泛型集合 '名稱空間:
vb.net & 泛型集合-解決Datatable強耦合
做基本資料設定窗體,本以為實現這個小小的窗體應該是最簡單的吧!不就是單擊修改按鈕,進行修改;然後單擊更新按鈕來對資料基本設定進行更新嗎?可是當一出手就遇到了問題,資料表中的資料該怎麼顯示在文字框中呢?這真的一下子難住了自己!不過遇到問題總會有解決的辦法。
.NET中的泛型集合總結
pro 顯示 接口 www 最重要的 div 類型 項目 .cn 最近對集合相關的命名空間比較感興趣,以前也就用下List<T>, Dictionary<Tkey, TValue>之類,總之,比較小白。點開N多博客,MSDN,StackOverflo
.net學習第十三天小結 泛型集合,裝箱拆箱,鍵值對集合,FileStream,多型
1.泛型集合List:確定了集合元素的型別,不進行裝箱拆箱. 2.裝箱:將值型別裝換為引用型別. 拆箱:將引用型別裝換為值型別 儘量避免裝箱拆箱. 3.鍵值對集合:Dictionary<int ,string> dic =new Dictionary<
三層架構中使用實體類填充泛型集合代替DataTable解決方案(ASP.NET+C#)
用三層架構開發專案,經常會遇到如下場景: D層負責與資料庫互動,一般是得到DataTable或DataSet物件,然後返回給B層,B層進行類似的處理來讀取資料:dt.Rows[0][“xxx”];或者dt.Rows[0][1];(強烈
泛型集合的使用
column func prot 技術分享 empty 創建 sha 循環 sdn 對於機房收費系統的重構。從大的方面來看。無非就是對於數據庫的四個操作。增刪改查。而且我們用的是三層架構進行重構。D層用來和數據庫打交道。進行這四個操作就須要有返回值,增刪改在這裏
普通集合和泛型集合的區別,哈希表和字典表的區別,隊列和堆棧的區別以及堆和棧的區別。
ear 釋放內存 main 廣泛 棧內存 節點 except {0} 常數 普通集合和泛型集合的區別: 泛型集合與傳統集合相比 類型更安全. 泛型集合無需裝箱拆箱操作. 泛型的重要性. 泛型是未來五年的主流技術 ...通常情況下,建議您使用泛型集合,因為這樣可以獲得類型安全
快速入門系列--CLR--03泛型集合
value mov nts readonly 只有一個 並且 cer view 工作 .NET中的泛型集合 在這裏主要介紹常見的泛型集合,很多時候其並發時的線程安全性常常令我們擔憂。因而簡述下.NET並發時線程安全特性,其詳情請見MSDN。 普通集合都不支持多重並發寫操
C#入門泛型集合List<T>
div nbsp 需要 強制轉換 初始 cnblogs lsi 轉換 blog 泛型集合 List<T> List<T>泛型集合特點: <T>表示泛型,T是Type簡寫,表示當前不確定具體類型; 可以根據用戶的實際需要,確定當前集合需要
C#中Dictionary泛型集合7種常見的用法
程序集 c# border adding 設置 type 其它 else ring 要使用Dictionary集合,需要導入C#泛型命名空間 System.Collections.Generic(程序集:mscorlib) Dictionary的描述1、從一組鍵(Key
DateTable轉化為泛型集合
datatable prop logs val ring reat tor row setvalue public class ListUtil { public static List<T> ToList<T>(DataT
泛型集合和非泛型集合的區別
但是 array 存儲 數據類型的轉換 是的 array對象 編譯期 都沒有 nbsp 他們倆個,一個是弱類型,一個是強類型。 而弱類型是指無法在應用程序編譯期間得到檢查,如array對象,你可以往這個對象中添加數字和字符都沒有問題。但是在遍歷操作的時候可能會牽扯到數據類型
DataSet裝換為泛型集合
DataSet裝換為泛型集合/// <summary> /// DataSet裝換為泛型集合 /// </summary> /// <typeparam name="MoDeviceAbnormalStateRecord"></typeparam&
非泛型集合
強制轉換 通過 cti AD clas 引用 安全性 最大限度 ict 1:ArrayList 非常類似於數組,也有人稱他為數組列表,ArrayList可以動態維護。數組的容量是固定的,而ArraysList的容量可以根據需要自動擴充。 給ArrayList添加數據:通過A
泛型集合
數量 add time 字典 gen 支持 engines 出現 clr ArrayList arry = new ArrayList(); arry.Add("小明"); arry.Add("小D");
我在北京寫代碼 寫出心中悲與喜 寫出人間的悲歡離合 歡迎閱讀 我的第三章 使用集合組織相關數據(泛型集合)
nes -s ear 插入元素 資源管理 底層 動態 用途 key) ArrayList arry = new ArrayList(); arry.Add("小明"); arry.Add("小D"); arr
LinQ操作泛型集合List<T>中的常用方法
proc lambda表達式 shadow ado ext 分享圖片 jpg reac 常用 1 Find()方法:也可以使用lambda表達式,會更加簡潔一點這兩個代碼完全是等價的都是返回年齡>20中的第一個元素。只是用lambda表達式更加簡潔一點。上面用的是委托
2018-10-14 Dictionary泛型集合之基本使用
1.Dictionary集合是一種“鍵值對”集合。 每個資料都是有兩部分組成-“鍵” “值”。 在字典集合中,我們是根據“鍵”去找值,這一點和List<T>不同。 在字典集合中,鍵必須是唯一的,而值是可以有重複的。 List<T>泛型集合,我們只限
2018-10-12 LIst泛型集合之使用者管理系統
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2018_10_12_LIst泛型集合之使用
非泛型集合的集合問題
非泛型集合的使用例項 假設我們建立了非泛型的System.Collections.ArrayList來儲存數值(分配在棧上的)資料,查詢ArrayList成員,就會發現它們所操作的是System.Object資料: public class ArrayList:... {