一、遍历Datatable
//方法一 DataSet dataSet = new DataSet(); DataTable dt = dataSet.Tables[0]; for (int i = 0; i < dt.Rows.Count; i++) { string strName = dt.Rows[i]["字段名"].ToString(); }
//方法二 DataSet myDataSet = new DataSet(); foreach (DataRow myRow in myDataSet.Tables["temp"].Rows) { var str = myRow[0].ToString(); }
//方法三 DataTable dt = new DataTable(); foreach (DataRow dr in dt.Rows) { object value = dr["ColumnsName"]; }
//方法四 遍历datatable获取其中的值某一字段的值 DataTable dt = new DataTable(); string key = string.Empty; //DICNAME、CNNAME数据库表中字段,根据这2个字段值来筛选数据 DataRow[] drs = dt.Select(string.Format("DICNAME='{0}' AND CNNAME='{1}'", ZiDuan, Zhi)); if (drs != null) { foreach (DataRow row in drs) { //遍历筛选过的数据获取其中某个字段的值 key = ConvertObjectToString(row["SUBCODE"]); } } public string ConvertObjectToString(object obj) { if (obj != null) { return obj.ToString(); } return string.Empty; }
二、将DataTable数据源转换成实体
/// <summary> /// 将DataTable数据源转换成实体类 /// </summary> public static List<T> ConvertToModel<T>(this DataTable dt) where T : new() { List<T> ts = new List<T>();// 定义集合 foreach (DataRow dr in dt.Rows) { T t = new T(); PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性 foreach (PropertyInfo pi in propertys) { if (dt.Columns.Contains(pi.Name)) { if (!pi.CanWrite) continue; var value = dr[pi.Name]; try { if (value != DBNull.Value && value != null && value.ToString() != "") { if (pi.PropertyType.FullName.ToUpper().Contains("DECIMAL")) { pi.SetValue(t, decimal.Parse(value.ToString()), null); } else if (pi.PropertyType.FullName.ToUpper().Contains("DOUBLE")) { pi.SetValue(t, double.Parse(value.ToString()), null); } else if (pi.PropertyType.FullName.ToUpper().Contains("INT32")) { pi.SetValue(t, int.Parse(value.ToString()), null); } else if (pi.PropertyType.FullName.ToUpper().Contains("INT16")) { pi.SetValue(t, short.Parse(value.ToString()), null); } else pi.SetValue(t, value, null); } } catch (Exception ex) { //throw ex; } } } ts.Add(t); } return ts; } //直接调用 DataTable dt = new DataTable(); List<实体类> testList = dt.ConvertToModel<实体类>(); //或者调用 获取转换为实体数据后指定条件的数据 DataTable dt = new DataTable(); foreach (DataRow row in dt.Rows) { List<实体类> testList = dt.ConvertToModel<实体类>(); 实体类 tempEntity = testList.Where(t => t.字段== row1["字段"].ToString()).FirstOrDefault(); }