方法一:
public
static
IList<T> ConvertToModel(DataTable dt)
{
// 定义集合
IList<T> ts =
new
List<T>();
// 获得此模型的类型
Type type =
typeof
(T);
string
tempName =
""
;
foreach
(DataRow dr
in
dt.Rows)
{
T t =
new
T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach
(PropertyInfo pi
in
propertys)
{
tempName = pi.Name;
// 检查DataTable是否包含此列
if
(dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if
(!pi.CanWrite)
continue
;
object
value = dr[tempName];
if
(value != DBNull.Value)
pi.SetValue(t, value,
null
);
}
}
ts.Add(t);
}
return
ts;
}
}
var query = from t in dt.AsEnumerable().ToList()
group t by new { t1 = t.Field<string>("CustomerID") } into m
select new
{
name = m.Key.t1,
score = m.Sum(n => n.Field<Int32>("aa")),
ss = m.Sum(n => n.Field<Int32>("vv"))
};
list转table:
方法一:
DataTable dt22= ToDataTable(query.Where(p=>1==1));
public static DataTable ToDataTable<T>(IEnumerable<T> collection)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
}