using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace ZD.Share.Common
|
{
|
public static class DataHelper
|
{
|
public static List<T> ToModelList<T>(this DataSet ds) where T : new()
|
{
|
try
|
{
|
List<T> list = new List<T>();
|
if (ds.Tables[0].Rows.Count > 0)
|
{
|
foreach (DataRow row in ds.Tables[0].Rows)
|
{
|
list.Add(row.Put(new T()));
|
}
|
}
|
return list;
|
}
|
catch (Exception ex)
|
{
|
throw;
|
}
|
}
|
|
public static List<T> ToModelList<T>(this DataTable dt) where T : new()
|
{
|
try
|
{
|
List<T> list = new List<T>();
|
if (dt.Rows.Count > 0)
|
{
|
foreach (DataRow row in dt.Rows)
|
{
|
list.Add(row.Put(new T()));
|
}
|
}
|
return list;
|
}
|
catch (Exception ex)
|
{
|
throw;
|
}
|
}
|
|
/// <summary>
|
/// 返回一条数据的Model
|
/// </summary>
|
/// <typeparam name="T">Model类型</typeparam>
|
/// <param name="entity">Model类型</param>
|
/// <param name="ds"></param>
|
/// <returns></returns>
|
public static T ToModel<T>(DataSet ds) where T : new()
|
{
|
try
|
{
|
T m = new T();
|
if (ds.Tables[0].Rows.Count > 0)
|
{
|
m = ds.Tables[0].Rows[0].Put(new T());
|
}
|
return m;
|
}
|
catch (Exception)
|
{
|
return default(T);
|
//throw;
|
}
|
}
|
|
public static T Put<T>(this DataRow row, T entity) where T : new()
|
{
|
if (entity == null)
|
{
|
entity = new T();
|
}
|
Type type = typeof(T);
|
PropertyInfo[] pi = type.GetProperties();
|
foreach (PropertyInfo item in pi)
|
{
|
int index = row.Table.Columns.IndexOf(item.Name);
|
if (index != -1)
|
{
|
if (row[item.Name] != null && row[item.Name] != DBNull.Value)
|
{
|
if (item.PropertyType == typeof(DateTime))
|
{
|
//如果对日期格式有特殊要求 可以在这里转换
|
item.SetValue(entity, Convert.ToDateTime(row[item.Name].ToString()), null);
|
}
|
else
|
{
|
item.SetValue(entity, ChangeType(row[item.Name], item.PropertyType), null);
|
}
|
}
|
}
|
}
|
return entity;
|
}
|
|
public static object ChangeType(object obj, Type conversionType)
|
{
|
return ChangeType(obj, conversionType, Thread.CurrentThread.CurrentCulture);
|
}
|
|
public static object ChangeType(object obj, Type conversionType, IFormatProvider provider)
|
{
|
|
#region Nullable
|
Type nullableType = Nullable.GetUnderlyingType(conversionType);
|
if (nullableType != null)
|
{
|
if (obj == null)
|
{
|
return null;
|
}
|
return Convert.ChangeType(obj, nullableType, provider);
|
}
|
#endregion
|
if (typeof(System.Enum).IsAssignableFrom(conversionType))
|
{
|
return Enum.Parse(conversionType, obj.ToString());
|
}
|
return Convert.ChangeType(obj, conversionType, provider);
|
}
|
|
|
|
public static string ToListParam<T>(this List<T> list)
|
{
|
string str = string.Empty;
|
foreach (var item in list)
|
{
|
str += $"'{item}',";
|
}
|
str = str.TrimEnd(',');
|
str = $"({str})";
|
return str;
|
}
|
|
|
public static string GetUpdateStr(string table, Dictionary<string, object> dic, string condition)
|
{
|
var strSet = string.Empty;
|
foreach (var item in dic)
|
{
|
var type = Util.GetObjectType(item.Value);
|
switch (type)
|
{
|
case "string":
|
case "date":
|
strSet += $" {item.Key}='{item.Value}' ";
|
break;
|
default:
|
strSet += $" {item.Key}={item.Value} ";
|
break;
|
}
|
}
|
return $"update {table} set {strSet} where 1=1 {condition}";
|
}
|
}
|
}
|