解决方案 »
- 50个radiobutton,用最少的语句取出选中的那个的text?
- 问几个c#问题..
- 关于windows服务在OnStart里面有大数据操作导致windows服务启动失败
- C#中的泛型怎么使用
- 怎么判断DataGrid的滚动条的位置?
- 何处能下载Visual Studio 2005 Beta 1 Refresh with Visual Studio 2005 Team System(不是beta 1 和Whidbey)?
- 报错方法与委托不匹配?怎么回事?
- WPF,请解释一下这个绑定为什么有更改通知
- 窗体的问题
- datagrid 的一个问题,急救!
- 将图片转成二进制流,再转成字符,再转回去图片就不能正常显示了
- NetworkStream问题
我想要类似的这样一个函数来处理这个,请问该如何来写呢?万分感谢!
/// <summary>
/// 将SQL查询的DataTable数据转化为List
/// </summary>
/// <param name="dt">SQL查询结果</param>
/// <returns>List</returns>
private static List<NGTypeStats> DataTableToList(DataTable dt)
{
List<NGTypeStats> _ngTypeStatsList = new List<NGTypeStats>(); try
{
foreach (DataRow dr in dt.Rows)
{
NGTypeStats ngTypeStats = new NGTypeStats
{
ProjectName = dr.ItemArray[0].ToString(),
Station = dr.ItemArray[1].ToString(),
TestCount = Convert.ToInt16(dr.ItemArray[2].ToString()),
NGTypes = new List<NGType>()
}; NGType ngType = new NGType
{
Type = Convert.ToInt32(dr.ItemArray[3]),
Count = Convert.ToInt32(dr.ItemArray[4])
};
ngTypeStats.NGTypes.Add(ngType); _ngTypeStatsList.Add(ngTypeStats);
}
}
catch (Exception ex)
{
Console.WriteLine("Error in Read from SqlServer!" + ex.Message);
return null;
}
return _ngTypeStatsList;
}
/// 获得集合实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public static List<T> EntityList<T>(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
{
return null;
}
List<T> list = new List<T>();
T entity = default(T);
foreach (DataRow dr in dt.Rows)
{
entity = Activator.CreateInstance<T>();
PropertyInfo[] pis = entity.GetType().GetProperties();
foreach (PropertyInfo pi in pis)
{
if (dt.Columns.Contains(pi.Name))
{
if (!pi.CanWrite)
{
continue;
}
if (dr[pi.Name] != DBNull.Value)
{
Type t = pi.PropertyType;
if (t.FullName == "System.Guid")
{
pi.SetValue(entity, Guid.Parse(dr[pi.Name].ToString()), null);
}
else
{
pi.SetValue(entity, dr[pi.Name], null);
} }
}
}
list.Add(entity);
}
return list;
}
select test_station_name ,test_count from 表名 group by test_station_name ,test_count
Dim query = From m In dt.AsEnumerable
Group m By product = m("product"), station = m("test_station_name"), testCount = m("test_count") Into grp = Group
Select New NGTypeStats With
{.Product = product, .Station = station, .TestCount = testCount,
.NGTypes = (From m In grp Select New NGType With {.Type = m("ng_code"), .Count = m("ng_count")}).ToList
}
return query.tolist()
思路是先将Datatable里面的Datarow按照product,test_station_name,test_count分组得到
NGTypeStats 的Product ,Station TestCount , 而每组里面的数据的ng_code和ng_count取出来生成List就是.NGTypes 了。