博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 集合转换为DataTable
阅读量:6701 次
发布时间:2019-06-25

本文共 7704 字,大约阅读时间需要 25 分钟。

 

该类就用了几个类型,如int,int?,string,所以其它类型就先没管。

 

用到的类:

public class tb_Projects    {               public int ProID { get; set; }                public string ProjectName { get; set; }        ///         /// 编码        ///         public string ProjectCode { get; set; }               public int ParentId { get; set; }        public int? NextId { get; set; }        public int? ProjectOrder { get; set; }        public int IsEnabled { get; set; }        ///         /// 业主单位id        ///         public int? OwnerId { get; set; }        ///         /// 施工单位ID        ///         public int? ConstructionId { get; set; }        ///         /// 监理单位id        ///         public int? SupervisionId { get; set; }        ///         /// 承包单位id        ///         public int? ContractId { get; set; }        ///         /// 第几级(即在树层次中第几级,根元素级次为1,以此类推)        ///         public int? Level { get; set; }        ///         /// 数量        ///         public int? Quantity { get; set; }        public int VersionIng { get; set; }        ///         /// 里程桩号        ///         public string MileageNo { get; set; }        ///         /// 标准编码        ///         public string ComponentCode { get; set; }        ///         /// 内部编码        ///         public string NComponentCode { get; set; }        ///         /// 流程状态        ///         public int TaskStatus { get; set; }                public string FbxId { get; set; }        ///         /// 判断是否为单位工程        ///         public int IsSubunit { get; set; }        ///         /// 所属标段        ///         public string BiDSion { get; set; }    }
View Code

 

 

 

代码1:

StringBuilder sb = new StringBuilder();                Type elementType = typeof(Models.tb_Projects);                elementType.GetProperties().ToList().ForEach(propInfo =>                {                    if (Nullable.GetUnderlyingType(propInfo.PropertyType) == null)                    {                        //普通类型                        Type t = propInfo.PropertyType;                        if (t == typeof(System.String))                        { sb.Append($"if(!string.IsNullOrWhiteSpace(item.{propInfo.Name})){
{row[\"{propInfo.Name}\"]=item.{propInfo.Name};}}\r\n"); } else { sb.Append($"row[\"{propInfo.Name}\"]=item.{propInfo.Name};\r\n"); } } else { //可为空类型 Type t = Nullable.GetUnderlyingType(propInfo.PropertyType); if (t == typeof(System.String)) { sb.Append($"if(!string.IsNullOrWhiteSpace(item.{propInfo.Name})){
{row[\"{propInfo.Name}\"]=item.{propInfo.Name};}}\r\n"); } else { sb.Append($"if(item.{propInfo.Name}!=null){
{row[\"{propInfo.Name}\"]=item.{propInfo.Name};}}\r\n"); } } }); System.IO.File.WriteAllText("2.txt", sb.ToString()); Console.ReadLine();

 

 

 

代码2:

public DataTable GetDataTable(List
list) { DataTable dt = new DataTable(TableName); Type elementType = typeof(tb_Projects); elementType.GetProperties().ToList().ForEach(propInfo => dt.Columns.Add(propInfo.Name, Nullable.GetUnderlyingType(propInfo.PropertyType) ?? propInfo.PropertyType)); list = list.OrderBy(c => c.ProID).ToList(); list.ForEach(item => { DataRow row = dt.NewRow(); #region 生成赋值语句 //StringBuilder sb = new StringBuilder(); //Type elementType = typeof(Models.tb_Projects); //elementType.GetProperties().ToList().ForEach(propInfo => //{ // if (Nullable.GetUnderlyingType(propInfo.PropertyType) == null) // { // //普通类型 // Type t = propInfo.PropertyType; // if (t == typeof(System.String)) // { sb.Append($"if(!string.IsNullOrWhiteSpace(item.{propInfo.Name})){
{row[\"{propInfo.Name}\"]=item.{propInfo.Name};}}\r\n"); } // else // { sb.Append($"row[\"{propInfo.Name}\"]=item.{propInfo.Name};\r\n"); } // } // else // { // //可为空类型 // Type t = Nullable.GetUnderlyingType(propInfo.PropertyType); // if (t == typeof(System.String)) // { sb.Append($"if(!string.IsNullOrWhiteSpace(item.{propInfo.Name})){
{row[\"{propInfo.Name}\"]=item.{propInfo.Name};}}\r\n"); } // else // { sb.Append($"if(item.{propInfo.Name}!=null){
{row[\"{propInfo.Name}\"]=item.{propInfo.Name};}}\r\n"); } // } //}); //System.IO.File.WriteAllText("2.txt", sb.ToString()); //Console.ReadLine(); //row["ProID"] = item.ProID; //row["ProjectName"] = item.ProjectName; //row["ParentId"] = item.ParentId; //row["Level"] = item.Level; //row["BiDSion"] = item.BiDSion; //row["VersionIng"] = item.VersionIng; //row["MileageNo"] = item.MileageNo; //row["ProjectOrder"] = item.ProjectOrder; //row["ProjectCode"] = item.ProjectCode; //row["NComponentCode"] = item.NComponentCode; //row["NEXTID"] = 0; //row["ISENABLED"] = 0; #endregion //默认值 赋空 elementType.GetProperties().ToList().ForEach(propInfo => row[propInfo.Name] = DBNull.Value); //不为空 赋值 row["ProID"] = item.ProID; if (!string.IsNullOrWhiteSpace(item.ProjectName)) { row["ProjectName"] = item.ProjectName; } if (!string.IsNullOrWhiteSpace(item.ProjectCode)) { row["ProjectCode"] = item.ProjectCode; } row["ParentId"] = item.ParentId; if (item.NextId != null) { row["NextId"] = item.NextId; } if (item.ProjectOrder != null) { row["ProjectOrder"] = item.ProjectOrder; } row["IsEnabled"] = item.IsEnabled; if (item.OwnerId != null) { row["OwnerId"] = item.OwnerId; } if (item.ConstructionId != null) { row["ConstructionId"] = item.ConstructionId; } if (item.SupervisionId != null) { row["SupervisionId"] = item.SupervisionId; } if (item.ContractId != null) { row["ContractId"] = item.ContractId; } if (item.Level != null) { row["Level"] = item.Level; } if (item.Quantity != null) { row["Quantity"] = item.Quantity; } row["VersionIng"] = item.VersionIng; if (!string.IsNullOrWhiteSpace(item.MileageNo)) { row["MileageNo"] = item.MileageNo; } if (!string.IsNullOrWhiteSpace(item.ComponentCode)) { row["ComponentCode"] = item.ComponentCode; } if (!string.IsNullOrWhiteSpace(item.NComponentCode)) { row["NComponentCode"] = item.NComponentCode; } row["TaskStatus"] = item.TaskStatus; if (!string.IsNullOrWhiteSpace(item.FbxId)) { row["FbxId"] = item.FbxId; } row["IsSubunit"] = item.IsSubunit; if (!string.IsNullOrWhiteSpace(item.BiDSion)) { row["BiDSion"] = item.BiDSion; } //初值 仅这里使用 row["NextId"] = 0; row["IsEnabled"] = 0; dt.Rows.Add(row); }); return dt; }

 

转载于:https://www.cnblogs.com/guxingy/p/10100888.html

你可能感兴趣的文章
Crusher Django 学习笔记4 使用Model
查看>>
Sublime Text 3 快捷键汇总
查看>>
优化android studio编译的apk大小
查看>>
论证是一门学问
查看>>
Bad Request (Invalid Hostname)解决方法
查看>>
indy10 UDP实例
查看>>
POJ1274 The Perfect Stall(二分图)
查看>>
记录的习惯
查看>>
shell MAC 地址 校验
查看>>
函数式C代码
查看>>
一个10年SEO工作者的35个SEO经验
查看>>
待整理
查看>>
2016-8-2更新日志
查看>>
【Project3】技术总结
查看>>
mysql my.cnf 配置建议
查看>>
jQuery 鼠标滚轮插件应用 mousewheel
查看>>
php过滤html标签截取部分内容
查看>>
【NOIP2010】【P1317】乌龟棋
查看>>
makefile——小试牛刀
查看>>
bzoj 1084 DP
查看>>