將物件轉化為DataTable

2021-06-07 23:30:44 字數 2812 閱讀 5714

imports system.collections.generic

imports system.reflection

public class tablebuilder(of t)

private selectinfos as list(of propertyinfo)

private propinfos as propertyinfo()

sub new()

selectinfos = new list(of propertyinfo)

propinfos = gettype(t).getproperties

end sub

public sub setpropertynames(byval names() as string)

selectinfos.clear()

if names isnot nothing andalso names.count > 0 then

for each p as propertyinfo in propinfos

if names.contains(p.name) then

selectinfos.add(p)

end if

next

end if

end sub

public function createtable() as datatable

dim table as new datatable

if selectinfos.count = 0 then

selectinfos.addrange(propinfos)

end if

for each p as propertyinfo in selectinfos

table.columns.add(p.name, gettype(string))

next

return table

end function

public function todatatable(byval items as ienumerable(of t)) as datatable

dim table as datatable = createtable()

dim templist as new list(of string)

for each item as t in items

for each p as propertyinfo in selectinfos

dim value as object = p.getvalue(item, nothing)

if value isnot nothing then

templist.add(value.tostring)

else

templist.add(string.empty)

end if

next

table.rows.add(templist.toarray)

templist.clear()

next

return table

end function

end class

using system;

using system.collections;

using system.collections.generic;

using system.data;

using system.diagnostics;

using system.io;

using system.reflection;

using system.text.regularexpressions;

namespace dal

props = ps.toarray();

//props = (from propertyinfo p in typeof(t).getproperties() select p.name).toarray;

}/// /// 設定屬性名稱

///

public void setnames(datacolumncollection columns)}}

/// /// 設定屬性名稱

///

public void setnames(params string names)}}

/// /// 把datatable解釋成相應的領域物件。

///

/// 要解析的datatable

/// 領域物件

public listparse(datatable table)

list.add(obj);

}return list;

}/// /// 把datarow解釋成相應的領域物件。

///

/// 要解析的datarow

/// 領域物件

public t parse(datarow row)

return obj;

}/// /// 支援:string, int, long, double, boolean, datetime型別

///

private static void settopvalue(propertyinfo p, ref t obj, object value)

else if (fullname.contains("datetime"))

else if (fullname.contains("boolean"))

else if (numregex.ismatch(fullname))

}else}}

}

JS中將物件轉化為陣列

這個對於大佬來說應該是個很基礎的問題,但是今天我要用到這個的時候卻一下沒想起來該怎麼做,所以打算寫下來加深下影響。舉個例子,如何把乙個物件轉化為 我們都知道,js中物件有兩種取值方式,通過在.後面直接加屬性名取值,這也是我們最常使用的一種方式,例如 let obj console.log obj.n...

JS中將物件轉化為陣列

通過在.後面直接加屬性名取值,這也是我們最常使用的一種方式 let obj console.log obj.name wan let obj console.log obj name wan 中括號獲取的時候,屬性名稱要麼使用變數,要麼應該用字串 物件 let obj 如果目標陣列只是為了得到物件的...

C Excel資料轉化為Datatable

最近做專案,遇到了處理excel的問題,要求以excel為資料來源,直接將excel的資料在datagridview中顯示,主要是分三步進行。第一 建立excel檔案的連線 第二 將excel資料放入datatable 第三 繫結資料。建立excel檔案的連線,返回連線字串 private stri...