新文章 网摘 文章 随笔 日记

将List转换成文本和DataTable

        /// <summary>
        /// 将List转换成文本
        /// </summary>
        /// <param name="inputData"></param>
        /// <returns></returns>
        public string ToText(List<OrderConfirmDto> inputData)
        {
            var type = typeof(OrderConfirmDto);
            var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            StringBuilder sb = new StringBuilder();
            foreach (var dto in inputData)
            {
                StringBuilder rowSb = new StringBuilder();
                foreach (PropertyInfo p in props)
                {

                    var value = p.GetValue(dto);
                    object defaultValue = p.PropertyType.IsValueType ? Activator.CreateInstance(p.PropertyType) : null;

                    //如果等于默认值
                    if (value == defaultValue)
                    {
                        rowSb.Append("NULL,");
                        continue;
                    }

                    //如果是字符型
                    if (p.PropertyType == typeof(string))
                    {
                        var empty = value.ToString();
                        if (string.IsNullOrWhiteSpace(empty))
                        {
                            rowSb.Append("NULL,");
                            continue;
                        }
                    }

                    //如果是日期型
                    if (p.PropertyType == typeof(DateTime))
                    {
                        var date = ((DateTime)value).ToString("yyyy-MM-dd");
                        rowSb.Append(date).Append(",");
                        continue;
                    }

                    rowSb.Append(value + ",");
                }

                if (rowSb.Length > 0)
                {
                    var row = rowSb.ToString(0, rowSb.Length - 1);
                    sb.Append(row).Append(Environment.NewLine);
                }
            }

            return sb.ToString();
        }

        public DataTable ToDataTable(List<OrderConfirmDto> inputData)
        {
            DataTable dt = new DataTable("INDATA");
            var type = typeof(OrderConfirmDto);
            var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

            foreach (PropertyInfo p in props)
            {
                Type colType = p.PropertyType;
                if (colType.IsGenericType && colType.GetGenericTypeDefinition() == typeof(Nullable<>))
                {
                    colType = colType.GetGenericArguments()[0];
                }
                dt.Columns.Add(p.Name, colType);
            }

            foreach (var dto in inputData)
            {
                var row = dt.NewRow();
                foreach (PropertyInfo p in props)
                {
                    var value = p.GetValue(dto);
                    if (value == null)
                    {
                        row[p.Name] = DBNull.Value;
                    }
                    else
                    {
                        row[p.Name] = value;
                    }

                }

                dt.Rows.Add(row);
            }

            return dt;
        }

 

posted @ 2021-06-08 08:53  岭南春  阅读(186)  评论(0)    收藏  举报