????????????????????C#???????????á??????????t????????÷???????????????????????????????????????á???λ??????Χ??WWH????What??Why??How????????
????1???????????????????????????????????????????????????????????“??????????”???????????????????????á???????????????????????????????????????????ó??????????????????Щ???????????????????????Щ????????????????????÷???????????С??????????????е??Σ?????????????????????
?????????????????????????????????sql??????Ado.Net?????????????????????DataTable??DataReader???????????????????????????lamada?????????Щ?????????????DataTable?????????List<T>????????????????????????????
public static List<T> GetListByDateTable<T>(DataTable dt)
{
List<T> modelList = new List<T>();
try
{
//1.???DataTable???????????????
if (dt == null || dt.Rows.Count == 0)
{
return modelList;
}
//2.????DataTable??????
var lstCol = dt.Columns;
foreach (DataRow dr in dt.Rows)
{
T model = default(T);
//?????object(?????????????????????????????)?????????json??????л??object
if (typeof(T).Equals(typeof(object)))
{
var strJson = "{";
foreach(DataColumn oCol in lstCol)
{
var oAttrValue = Convert.IsDBNull(dr[oCol.ColumnName]) ? null : dr[oCol.ColumnName];
strJson += """ + oCol.ColumnName + "":"" + oAttrValue + ""??";
}
strJson = strJson.ToString().Trim('??') + "}";
model = E2ERes.JavaScriptStrToObj<T>(strJson);
}
else
{
model = FillEntityByDT<T>(dt?? dr);
}
modelList.Add(model);
}
}
catch
{
}
return modelList;
}
//???DataTable????????
private static T FillEntityByDT<T>(DataTable dt?? DataRow dr)
{
T model = (T)typeof(T).GetConstructor(new System.Type[] { }).Invoke(new object[] { });
//????????????????
PropertyInfo[] pro = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public);
Type type = model.GetType();
foreach (PropertyInfo propertyInfo in pro)
{
if (dt.Columns.Contains(propertyInfo.Name))
{
if (Convert.IsDBNull(dr[propertyInfo.Name]))
{
continue;
}
if (!string.IsNullOrEmpty(Convert.ToString(dr[propertyInfo.Name])))
{
type.GetProperty(propertyInfo.Name).SetValue(model?? dr[propertyInfo.Name]?? null);
}
}
}
return model;
}
??????????????????????????????DataTable??????List<Model>?????????????????????á?
????2????????÷????????????μ???????????????????????????“?????????????”????????????????????????????????~~?????÷?????????????÷????????????????????
??????1???????????????????????????????????????????????????????List<int>??ArrayList??List<int>??????????int??????????ArrayList????Add?κγ?????????????????????????
??????2????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????÷??????????????object???檔
????object a=1;
????//??????object??????????????????????
????int b=(int)a;
????//?????????????????????????????????????????????????????Ч???
??????÷??????
????public static T GetValue<T>(T a)
????{
????return a;
????}
????public static void Main()
????{
????int b=GetValue<int>(1);
????//?????????????????????????????int????????????????????????
????}
??????3??????????????????????????????????????????????