1:要属性是否可以为空System.Nullable`1[]
2:string 属性不为空
public static class ExtendIQueryable
{public static DataTable ConvertToDataTable(System.Linq.IQueryable o)
{
DataTable dt= new DataTable();
var props = o.ElementType.GetProperties();
foreach (System.Reflection.PropertyInfo pi in props)
{
string ddd = pi.PropertyType.ToString();
if ((pi.PropertyType == System.Type.GetType(" System.Nullable`1[System.Int32]") ) || (pi.PropertyType == System.Type.GetType("System.Int32")))
{
dt.Columns.Add(pi.Name, System.Type.GetType("System.Int32"));
}
else if (pi.PropertyType == System.Type.GetType("System.String"))
{
dt.Columns.Add(pi.Name, System.Type.GetType("System.String"));
}
else if ((pi.PropertyType == System.Type.GetType("System.Nullable`1[System.DateTime]")) || (pi.PropertyType == System.Type.GetType("System.DateTime")))
{
dt.Columns.Add(pi.Name, System.Type.GetType("System.DateTime"));
}
else
{
dt.Columns.Add(pi.Name, System.Type.GetType("System.Decimal"));
}
}
foreach (var item in o)
{
DataRow dr = dt.NewRow();
foreach (System.Reflection.PropertyInfo pi in props)
{
if (pi.GetValue(item,null) != null)
{
if (pi.GetValue(item,null) != null)
{
dr[pi.Name] = pi.GetValue(item,null);
}
}
}
dt.Rows.Add(dr);
}
return dt;
}