/// <summary> /// 从DataTable中获取实体列表 /// </summary> /// <param name="dt"></param> /// <param name="msg"></param> /// <returns></returns> public List <DAL.StockPositionAndVolume> GetModelFromDataTable(DataTable dt, out string msg) { List <DAL.StockPositionAndVolume> list = new List <DAL.StockPositionAndVolume>(); msg = ""; //接口协议文档中定义的字段 Dictionary <string, string> dataFieldNameDic = new Dictionary <string, string>(); /* * WHCode 仓库编码 * WHName 仓库名称 * CargoCode 商品编码 * CargoName 商品名称 * CargoSpec 规格 * CargoModel 型号 * CargoUnit 单位 * ReleaseYear 发行年份 * CargoStockCount 库存数量 * CargoProperty 存货属性 * ProjectName 项目名称 * */ dataFieldNameDic.Add("WHCode", "仓库编码"); dataFieldNameDic.Add("WHName", "仓库名称"); dataFieldNameDic.Add("CargoCode", "商品编码"); dataFieldNameDic.Add("CargoName", "商品名称"); dataFieldNameDic.Add("CargoSpec", "规格"); dataFieldNameDic.Add("CargoModel", "型号"); dataFieldNameDic.Add("CargoUnit", "单位"); dataFieldNameDic.Add("ReleaseYear", "发行年份"); dataFieldNameDic.Add("CargoStockCount", "库存数量"); dataFieldNameDic.Add("CargoProperty", "存货属性"); dataFieldNameDic.Add("ProjectName", "项目名称"); if (dt.Rows.Count == 0) { msg = "用友系统返回数据集中无数据!"; return(new List <StockPositionAndVolume>()); } StringBuilder errorColName = new StringBuilder(); //检查数据集中是否存在指定字段 foreach (KeyValuePair <string, string> kvp in dataFieldNameDic) { if (dt.Columns.Contains(kvp.Key) == false) { errorColName.Append(Environment.NewLine); errorColName.Append(kvp.Value); errorColName.Append("-"); errorColName.Append(kvp.Key); } } if (errorColName.Length > 0) { errorColName.Insert(0, "用友系统返回的数据集中未包含如下字段,不能进行有效解析!"); msg = errorColName.ToString(); return(new List <StockPositionAndVolume>());; } //遍历数据集创建实体 foreach (DataRow dr in dt.Rows) { StockPositionAndVolume newModel = new StockPositionAndVolume(); newModel.WHCode = DataCheckHelper.GetCellString(dr["WHCode"]); newModel.CargoCode = DataCheckHelper.GetCellString(dr["CargoCode"]); newModel.CargoName = DataCheckHelper.GetCellString(dr["CargoName"]); newModel.CargoSpec = DataCheckHelper.GetCellString(dr["CargoSpec"]); newModel.CargoModel = DataCheckHelper.GetCellString(dr["CargoModel"]); newModel.CargoUnits = DataCheckHelper.GetCellString(dr["CargoUnit"]); newModel.ReleaseYear = DataCheckHelper.GetCellString(dr["ReleaseYear"]); newModel.CargoStockCount = DataCheckHelper.GetCellDouble(dr["CargoStockCount"]); newModel.LastUpdateTime = DateTime.Now; //newModel.Remark = DataCheckHelper.GetCellString(dr["ProjectName"]); List <StockPositionAndVolume> existWareHouse = (from r in list where r.CargoCode == newModel.CargoCode && r.WHCode == newModel.WHCode select r).ToList <StockPositionAndVolume>(); if (existWareHouse == null || existWareHouse.Count == 0)//过滤重复数据 { list.Add(newModel); } } return(list); }