C 中DataTable轉化為List解析

2021-09-07 07:05:16 字數 2611 閱讀 1199

在.net專案中使用到datatable和list集合的地方較多, 泛型的好處: 它為使用c#語言編寫物件導向程式增加了極大的效力和靈活性。不會強行對值型別進行裝箱和拆箱,或對引用型別進行。當涉及到兩者之間的轉換時,就顯得有些較為繁瑣。這個其中的問題主要在兩者的儲存方式,datatable的儲存方式採用一種二維表的方式進行資料的儲存操作,datatable表示記憶體中資料的乙個表。在list集合中,list的本質就是乙個陣列,則採用一種線性結構對資料進行儲存。

在轉換過程中,主要的問題在於不同型別的處理上,主要分為值型別和引用型別兩大類。

c#中值型別總是含有相應該型別的乙個值,指型別包含:簡單型別(****** types ),結構型別(struct types),列舉型別(enumeration types)。

簡單型別包含:整型,布林型,字元型 (整型的一種特殊情況),浮點型,小數型。

整型包含: sbyte 、byte、 short、 ushort、 int、 uint、 long、 ulong 和 char。

引用型別:引用型別不儲存它們所代表的實際資料,但它們儲存實際資料的引用。主要包含:物件型別,類類 型,介面,代表元,字串型別,陣列。

現提供轉換的**,僅供參考:

1.型別列舉:

///

///型別列舉

/// private

enum

modeltype

private

static

modeltype getmodeltype(type modeltype)

//值型別

if(modeltype.isvaluetype)

//引用型別 特殊型別處理

if (modeltype == typeof(string

))

//引用型別 特殊型別處理

return modeltype == typeof(object) ?modeltype.object : modeltype.else;

}

2.具體的轉換操作方法:

///

///datatable轉換為list

集合

/// ///

//////

public

static listdatatabletolist(datatable table)

return

list;

}public

static t datarowtomodel(datarow row)

break

;

//值型別

case

modeltype.enum:

else

if (fitype == typeof(string

)) }}

break

;

//引用型別 c#對string也當做值型別處理

case

modeltype.string:

break

;

//引用型別 直接返回第一行第一列的值

case

modeltype.object:

break

;

//引用型別

case

modeltype.else:

break

;

case

modeltype.enum:

else

if (fitype == typeof(string

))

}break

;

case

modeltype.string:

break

;

case

modeltype.object:

break

;

case

modeltype.else:

throw

new exception("

不支援該型別轉換");

default

:

throw

new exception("

未知型別");}}

}break

;

default

: model = default

(t);

break

; }

return

model;

}

以上的操作中,對不同型別有對應的處理方式。

C 把list轉化為Datatable

csdn廣告是越來越多了,所有部落格筆記不再更新,新 dotnet筆記 使用linq的時候,經常需要 select new 如何讀取這些欄位的單個值?通常兩種做法 1 object物件反射是可以做的 2 在反射的基礎上,轉化為datatable 也可以 如下例項 using system using...

C 將DataTable轉化為List

c 將datatable轉化為list 在使用三層架構開發乙個 時,希望把datatable物件轉換為list物件,於是在網上找資料,總結乙個比較方便的方法來實現 使用反射。思路 初始化乙個list物件 獲取到t所有的屬性,初始化乙個t物件 遍歷所有屬性,如果datatable中含有相應屬性的值則為...

將物件轉化為DataTable

imports system.collections.generic imports system.reflection public class tablebuilder of t private selectinfos as list of propertyinfo private propin...