日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataSet和List 泛型之间互相转换 (转载, 作者写的很好)

發(fā)布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataSet和List 泛型之间互相转换 (转载, 作者写的很好) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

DataSet和List<T> 泛型之間互相轉(zhuǎn)換 (轉(zhuǎn)載, 作者寫的很好)

//DataSet與泛型集合間的互相轉(zhuǎn)換

//利用反射機制將DataTable的字段與自定義類型的公開屬性互相賦值。

//注意:從DataSet到IList<T>的轉(zhuǎn)換,自定義類型的公開屬性必須與DataTable中的字段名稱

//一致,才能到達想要的結(jié)果。建議DataTable的定義從數(shù)據(jù)庫來,自定義類型用O/R Mapping的方式獲得。

//代碼說明

/// <summary>

/// 泛型集合與DataSet互相轉(zhuǎn)換

/// </summary>

using System.Data;

using System.Reflection;

using System.Collections;

using System.Collections.Generic;

using System;

namespace qdl
{

??? public class IListDataSet
??? {

??????? /// <summary>

??????? /// 集合裝換DataSet

??????? /// </summary>

??????? /// <param name="list">集合</param>

??????? /// <returns></returns>??

??????? /// 2008-8-1 22:08 HPDV2806

??????? public static DataSet ToDataSet(IList p_List)
??????? {

??????????? DataSet result = new DataSet();

??????????? DataTable _DataTable = new DataTable();

??????????? if (p_List.Count > 0)
??????????? {

??????????????? PropertyInfo[] propertys = p_List[0].GetType().GetProperties();

??????????????? foreach (PropertyInfo pi in propertys)
??????????????? {

??????????????????? _DataTable.Columns.Add(pi.Name, pi.PropertyType);

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

??????????????? for (int i = 0; i < p_List.Count; i++)
??????????????? {

??????????????????? ArrayList tempList = new ArrayList();

??????????????????? foreach (PropertyInfo pi in propertys)
??????????????????? {

??????????????????????? object obj = pi.GetValue(p_List[i], null);

??????????????????????? tempList.Add(obj);

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

??????????????????? object[] array = tempList.ToArray();

??????????????????? _DataTable.LoadDataRow(array, true);

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

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

??????????? result.Tables.Add(_DataTable);

??????????? return result;

??????? }

??????? /// <summary>

??????? /// 泛型集合轉(zhuǎn)換DataSet

??????? /// </summary>??

??????? /// <typeparam name="T"></typeparam>?

??????? /// <param name="list">泛型集合</param>?

??????? /// <returns></returns>??

??????? /// 2008-8-1 22:43 HPDV2806

??????? public static DataSet ToDataSet<T>(IList<T> list)
??????? {

??????????? return ToDataSet<T>(list, null);

??????? }

??????? /// <summary>

??????? /// 泛型集合轉(zhuǎn)換DataSet

??????? /// </summary>

??????? /// <typeparam name="T"></typeparam>

??????? /// <param name="p_List">泛型集合</param>

??????? /// <param name="p_PropertyName">待轉(zhuǎn)換屬性名數(shù)組</param>????

??????? /// <returns></returns>?????

??????? /// 2008-8-1 22:44 HPDV2806???

??????? public static DataSet ToDataSet<T>(IList<T> p_List, params string[] p_PropertyName)
??????? {

??????????? List<string> propertyNameList = new List<string>();

??????????? if (p_PropertyName != null)

??????????????? propertyNameList.AddRange(p_PropertyName);

??????????? DataSet result = new DataSet();

??????????? DataTable _DataTable = new DataTable();

??????????? if (p_List.Count > 0)
??????????? {

??????????????? PropertyInfo[] propertys = p_List[0].GetType().GetProperties();

??????????????? foreach (PropertyInfo pi in propertys)
??????????????? {

??????????????????? if (propertyNameList.Count == 0)
??????????????????? {

??????????????????????? // 沒有指定屬性的情況下全部屬性都要轉(zhuǎn)換?

??????????????????????? _DataTable.Columns.Add(pi.Name, pi.PropertyType);

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

??????????????????? else
??????????????????? {

??????????????????????? if (propertyNameList.Contains(pi.Name))

??????????????????????????? _DataTable.Columns.Add(pi.Name, pi.PropertyType);

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

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

??????????????? for (int i = 0; i < p_List.Count; i++)
??????????????? {

??????????????????? ArrayList tempList = new ArrayList();

??????????????????? foreach (PropertyInfo pi in propertys)
??????????????????? {

??????????????????????? if (propertyNameList.Count == 0)
??????????????????????? {

??????????????????????????? object obj = pi.GetValue(p_List[i], null);

??????????????????????????? tempList.Add(obj);

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

??????????????????????? else
??????????????????????? {

??????????????????????????? if (propertyNameList.Contains(pi.Name))
??????????????????????????? {

??????????????????????????????? object obj = pi.GetValue(p_List[i], null);

??????????????????????????????? tempList.Add(obj);

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

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

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

??????????????????? object[] array = tempList.ToArray();

??????????????????? _DataTable.LoadDataRow(array, true);

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

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

??????????? result.Tables.Add(_DataTable);

??????????? return result;

??????? }

??????? /// <summary>

??????? /// DataSet裝換為泛型集合????

??????? /// </summary>????

??????? /// <typeparam name="T"></typeparam>???

??????? /// <param name="p_DataSet">DataSet</param>???

??????? /// <param name="p_TableIndex">待轉(zhuǎn)換數(shù)據(jù)表索引</param>???

??????? /// <returns></returns>????

??????? /// 2008-8-1 22:46 HPDV2806??

??????? public static IList<T> DataSetToIList<T>(DataSet p_DataSet, int p_TableIndex)
??????? {

??????????? if (p_DataSet == null || p_DataSet.Tables.Count < 0)

??????????????? return null;

??????????? if (p_TableIndex > p_DataSet.Tables.Count - 1)

??????????????? return null;

??????????? if (p_TableIndex < 0)

??????????????? p_TableIndex = 0;

??????????? DataTable p_Data = p_DataSet.Tables[p_TableIndex];

??????????? // 返回值初始化??????

??????????? IList<T> result = new List<T>();

??????????? for (int j = 0; j < p_Data.Rows.Count; j++)
??????????? {

??????????????? T _t = (T)Activator.CreateInstance(typeof(T));

??????????????? PropertyInfo[] propertys = _t.GetType().GetProperties();

??????????????? foreach (PropertyInfo pi in propertys)
??????????????? {

??????????????????? for (int i = 0; i < p_Data.Columns.Count; i++)
??????????????????? {

??????????????????????? // 屬性與字段名稱一致的進行賦值??????

??????????????????????? if (pi.Name.Equals(p_Data.Columns[i].ColumnName))
??????????????????????? {

??????????????????????????? // 數(shù)據(jù)庫NULL值單獨處理??????

??????????????????????????? if (p_Data.Rows[j][i] != DBNull.Value)

??????????????????????????????? pi.SetValue(_t, p_Data.Rows[j][i], null);

??????????????????????????? else

??????????????????????????????? pi.SetValue(_t, null, null);

??????????????????????????? break;

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

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

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

??????????????? result.Add(_t);

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

??????????? return result;

??????? }

??????? /// <summary>

??????? /// DataSet裝換為泛型集合

??????? /// </summary>

??????? /// <typeparam name="T"></typeparam>

??????? /// <param name="p_DataSet">DataSet</param>????

??????? /// <param name="p_TableName">待轉(zhuǎn)換數(shù)據(jù)表名稱</param>????

??????? /// <returns></returns>?????

??????? /// 2008-8-1 22:47 HPDV2806???

??????? public static IList<T> DataSetToIList<T>(DataSet p_DataSet, string p_TableName)
??????? {

??????????? int _TableIndex = 0;

??????????? if (p_DataSet == null || p_DataSet.Tables.Count < 0)

??????????????? return null;

??????????? if (string.IsNullOrEmpty(p_TableName))

??????????????? return null;

??????????? for (int i = 0; i < p_DataSet.Tables.Count; i++)
??????????? {

??????????????? // 獲取Table名稱在Tables集合中的索引值??????

??????????????? if (p_DataSet.Tables[i].TableName.Equals(p_TableName))
??????????????? {

??????????????????? _TableIndex = i;

??????????????????? break;

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

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

??????????? return DataSetToIList<T>(p_DataSet, _TableIndex);

??????? }

??? }

??? /*****************

??? 使用范圍

??? 1 可以用在業(yè)務層中數(shù)據(jù)獲取,獲取DataSet的同時也可以轉(zhuǎn)為IList集合為調(diào)用者所使用。

??? 2 在WebServices中傳輸自定義類型使用,即傳遞參數(shù)都用DataSet類型(WebServices直接支持的數(shù)據(jù)類型),在使用前將其轉(zhuǎn)換為IList來使用。

??? * ******************************/

}

總結(jié)

以上是生活随笔為你收集整理的DataSet和List 泛型之间互相转换 (转载, 作者写的很好)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 粉色视频免费 | 成人免费自拍视频 | 亚洲精品一区在线观看 | 欧美影院一区 | 黄色av在| 色丁香综合 | 她也啪在线视频 | 日本亲子乱子伦xxxx50路 | 日韩一区二区三区不卡视频 | 欧美一区二区三区视频在线 | 免费黄色网页 | 波多野结衣亚洲一区 | 国产精品久久久久久亚洲影视 | 日日摸日日碰夜夜爽av | 噜噜视频| 精品影片一区二区入口 | 国产午夜一区二区三区 | 国产伦精品一区二区三区照片91 | 九一亚洲精品 | 五月开心网 | 91视频免费网站 | 国产精品日本 | 久久成人网18网站 | 超污视频在线观看 | 国产特黄大片aaaa毛片 | 亚洲国产私拍精品国模在线观看 | 99久久久无码国产精品性色戒 | 日韩精品久久久久久久电影99爱 | 天堂在线亚洲 | 中文字幕在线成人 | 免费无码毛片一区二区app | 国产精品探花一区二区在线观看 | 影音先锋一区 | 色就是色亚洲色图 | 丁香六月激情综合 | 日韩黄色在线视频 | 欧美日韩三级在线观看 | 久久精品2| 干日本少妇首页 | 久久久黄色网 | 激情小说激情视频 | 欧美激情一区二区在线 | 久久久久一区二区三区四区 | 这里只有精品视频在线 | 亚洲大片精品 | 色老头一区二区三区在线观看 | 欧美日本韩国一区二区三区 | 中文字幕在线2021 | 国产欧美又粗又猛又爽 | 亚洲欧美综合久久 | 久久精品国产99国产精品 | 无码视频一区二区三区 | 99热这里只有精品3 成年人黄色网址 | 国模少妇一区二区 | 污污网站在线观看视频 | www黄色片网站 | 肉肉h| 国产又黄又粗的视频 | 日韩欧美综合在线 | 香蕉福利 | 久久av在线播放 | 人人插人人看 | 久久久久99精品成人片直播 | av片网| 色com| 日韩毛片免费观看 | 7788色淫网站小说 | 2019国产精品视频 | 91亚洲天堂 | 中文理论片 | 啪啪五月天 | 丰满少妇一区二区三区 | 天天草天天爽 | 欧美成人一级 | 亚洲精品久久久久中文字幕二区 | 操操久久 | 国语播放老妇呻吟对白 | 香蕉视频免费看 | 骚色综合 | 男生和女生一起搞鸡 | 99在线观看免费视频 | 中文在线观看高清视频 | 午夜剧场免费看 | 自拍偷拍亚洲综合 | 草av| 香蕉网站在线观看 | 国产suv精品一区二区 | 国产中文在线观看 | 天堂中文在线资源 | 男女超碰| 午夜天堂精品久久久久 | 少妇一级淫免费播放 | 久久久久久久无码 | 中文字字幕第183页 欧美特级一级片 | 伊人久久中文 | 进去里在线观看 | 综合久久国产 | 亚洲精品热 | 九九看片|