private void button1_Click(object sender, EventArgs e)
{
using (var db = new yongyouContext())
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
List<InventoryFlow> inventoryFlowList = new List<InventoryFlow>();
var stores = db.Stores.Where(p => true);
DataTable dataTable = ExcelUtil.ExcelToTable(openFileDialog1.FileName);
foreach (DataRow dr in dataTable.Rows)
{
if (dr["单据类型"].ToString() == "销售出库单" && dr["操作类型"].ToString() == "扣减库存完成")
{
InventoryFlow inventoryFlow = new InventoryFlow();
inventoryFlow.StoreName = dr["仓库"].ToString();
inventoryFlow.StoreCode = GetCodeByName(inventoryFlow.StoreName);
inventoryFlow.ItemCode = dr["货品编码"].ToString();
inventoryFlow.DocNumber = dr["单号"].ToString();
inventoryFlow.ChangeQty = int.Parse(dr["库存变化量"].ToString());
inventoryFlow.OperateTime = DateTime.Parse(dr["操作时间"].ToString());
inventoryFlow.WhcOrderCode = dr["仓内操作单"].ToString();
String GetCodeByName(string StoreName)
{
return stores.Where(p => p.StoreName == StoreName).FirstOrDefault().StoreCode;
}
inventoryFlowList.Add(inventoryFlow);
}
}
var flows = inventoryFlowList.GroupBy(p => p.DocNumber).ToList();
foreach (var fs in flows)
{
SelectDelete(fs.Key);
foreach (var a in fs)
{
Console.WriteLine(a.DocNumber);
InventoryFlow inventoryFlow = new InventoryFlow();
inventoryFlow.StoreName = a.StoreName;
inventoryFlow.StoreCode = a.StoreCode;
inventoryFlow.ItemCode = a.ItemCode;
inventoryFlow.DocNumber = a.DocNumber;
inventoryFlow.ChangeQty = a.ChangeQty;
inventoryFlow.OperateTime = a.OperateTime;
inventoryFlow.WhcOrderCode = a.WhcOrderCode;
db.GosInventoryFlows.Add(inventoryFlow);
db.SaveChanges();
}
}
}
MessageBox.Show("导入成功!");
void SelectDelete(string DocNumber)
{
var InventoryFlows = db.GosInventoryFlows.Where(p => p.DocNumber == DocNumber).ToList();
if (InventoryFlows != null)
{
foreach (var item in InventoryFlows)
{
db.GosInventoryFlows.Remove(item);
}
db.SaveChanges();
}
}
}
}
}
}
记录导入一张表格中重复数据处理方法二
方法二和方法一都是导入到一张数据库表中,方法二和方法一都能保证导入地数据一样 方法二能保证导入的行数也是不变的