Winforms 将多个方法返回列表中的数据插入c中的数据库时出错#
我需要部分代码的帮助,请看以下内容: 正如您在下面看到的,我有6个方法解析传入数据,然后将其作为列表返回,所以我的问题是将该列表数据发送到我的数据库表SerialNumber,列表的每个方法都是一个单独的字段,将填充数据库列 例如,解析材料将填充数据库materiallookupcode列,其他材料也是如此 这是数据库表的图像 下面是所有5个方法的代码,它们读取数据然后返回,我需要将这些数据发送到我的数据库Winforms 将多个方法返回列表中的数据插入c中的数据库时出错#,winforms,arraylist,c#-4.0,entity-framework-6,Winforms,Arraylist,C# 4.0,Entity Framework 6,我需要部分代码的帮助,请看以下内容: 正如您在下面看到的,我有6个方法解析传入数据,然后将其作为列表返回,所以我的问题是将该列表数据发送到我的数据库表SerialNumber,列表的每个方法都是一个单独的字段,将填充数据库列 例如,解析材料将填充数据库materiallookupcode列,其他材料也是如此 这是数据库表的图像 下面是所有5个方法的代码,它们读取数据然后返回,我需要将这些数据发送到我的数据库 private List<string> ParseMaterial()
private List<string> ParseMaterial()
{
var materialList = new List<string>();
foreach (var material in _connection.GetBarcodeList())
{
materialList.Add(material.Substring(10, 5));
}
return materialList;
}
private List<string> ParseLot()
{
var lotList = new List<string>();
var establishmentList = GetEstablishmentCode();
foreach (var lot in _connection.GetBarcodeList())
{
if (establishmentList.Contains("038"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.LoganSport038Property);
}
if (establishmentList.Contains("072"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.LouisaCounty072Property);
}
if (establishmentList.Contains("086"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Madison086Property);
}
if (establishmentList.Contains("089"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Perry089Property);
}
if (establishmentList.Contains("069"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.StormLake069Property);
}
if (establishmentList.Contains("088"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Waterloo088Property);
}
if (establishmentList.Contains("265"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.GoodLetsVille265Property);
}
if (establishmentList.Contains("087"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.CouncilBluffs087Property);
}
if (establishmentList.Contains("064"))
{
lotList.Add(lot.Substring(28, 6) + _lotEstablishment.Sherman064Property);
}
}
return lotList;
}
private List<string> ParseSerialNumber()
{
var serialNumberList = new List<string>();
foreach (var serialNumber in _connection.GetBarcodeList())
{
serialNumberList.Add(serialNumber.Substring(36, 10));
}
return serialNumberList;
}
public List<string> ParseNetWeight()
{
var netWeightList = new List<string>();
foreach (var netWeight in _connection.GetBarcodeList())
{
netWeightList.Add(netWeight.Substring(22, 4));
}
return netWeightList;
}
public List<string> ParseGrossWeight()
{
var grossWeightList = new List<string>();
foreach (var grossWeight in _connection.GetBarcodeList())
{
grossWeightList.Add(grossWeight.Substring(22, 4));
}
return grossWeightList;
}
public List<string> FullBarcode()
{
var receiveFullBarcodeList = new List<string>();
foreach (var fullBarcode in _connection.GetBarcodeList())
{
receiveFullBarcodeList.Add(fullBarcode);
}
return receiveFullBarcodeList;
}
public List<string> GetEstablishmentCode()
{
var establishmentList = new List<string>();
foreach (var establishmentCode in _connection.GetBarcodeList())
{
establishmentList.Add(establishmentCode.Substring(36, 3));
}
return establishmentList;
}
private async void btn_SubmitData_Click(object sender, EventArgs e)
{
// parse list methodss
var materialList = ParseMaterial();
var lotList = ParseLot();
var netWeightList = ParseNetWeight();
var grossWeightList = ParseGrossWeight();
var serialNumberList = ParseSerialNumber();
var fullSerialNumberList = FullBarcode();
var material = "";
var lot = "";
var net = "";
var gross = "";
var serial = "";
var fullSerial = "";
var currentUser = _currentUser.GetCurrentUsernameOnApp();
var licensePlateId = GetLicensePlateIds();
for (var i = 0; i < _connection.GetBarcodeList().Count; i++)
{
material = materialList[i];
lot = lotList[i];
net = netWeightList[i];
gross = grossWeightList[i];
serial = serialNumberList[i];
fullSerial = fullSerialNumberList[i];
}
// database table and columns
var serialNumbersInsert = new List<SerialNumber>
{
new SerialNumber
{
SerialNumberLookupCode = serial,
NetWeight = Convert.ToDecimal(net) / 100,
GrossWeight = Convert.ToDecimal(gross) / 100,
LotLookupCode = lot,
MaterialLookupCode = material,
FullSerialNumberLookupCode = fullSerial,
CreatedSysDateTime = DateTime.Now,
ModifiedSysDateTime = DateTime.Now,
CreatedSysUser = currentUser,
ModifiedSysUser = currentUser,
LicensePlateId = licensePlateId
}
};
// insert to the database
foreach (var list in serialNumbersInsert)
{
_unitOfWork.SerialNumbers.Add(list);
}
await _unitOfWork.Complete();
}
我搜索了其他地方,但到目前为止还没有找到一个好的解决方案,因此非常感谢您的帮助。我能够解决我的问题,我所做的是在循环中分配所有列表,然后将它们分配给数据库中的每一列 但我仍在寻找一种更好、更干净的方法来解决这个问题
private async void btn_SubmitData_Click(object sender, EventArgs e)
{
// parse list methods - represents each field of the database column
var materialList = ParseMaterial();
var lotList = ParseLot();
var netWeightList = ParseNetWeight();
var grossWeightList = ParseGrossWeight();
var serialNumberList = ParseSerialNumber();
var fullSerialNumberList = FullBarcode();
var currentUser = _currentUser.GetCurrentUsernameOnApp();
var licensePlateId = GetLicensePlateIds();
for (var i = 0; i < _connection.GetBarcodeList().Count; i++)
{
var serialNumbersInsert = new List<SerialNumber>
{
new SerialNumber
{
SerialNumberLookupCode = materialList[i],
NetWeight = Convert.ToDecimal(netWeightList[i]) / 100,
GrossWeight = Convert.ToDecimal(grossWeightList[i]) / 100,
LotLookupCode = lotList[i],
MaterialLookupCode = materialList[i],
FullSerialNumberLookupCode = fullSerialNumberList[i],
CreatedSysDateTime = DateTime.Now,
ModifiedSysDateTime = DateTime.Now,
CreatedSysUser = currentUser,
ModifiedSysUser = currentUser,
LicensePlateId = licensePlateId
}
};
foreach (var list in serialNumbersInsert)
{
_unitOfWork.SerialNumbers.Add(list);
}
await _unitOfWork.Complete();
}
}
private async void btn\u SubmitData\u单击(对象发送方,事件参数e)
{
//解析列表方法-表示数据库列的每个字段
var materialList=ParseMaterial();
var lotList=ParseLot();
var netWeightList=ParseNetWeight();
var grossWeightList=ParseGrossWeight();
var serialNumberList=ParseSerialNumber();
var fullSerialNumberList=FullBarcode();
var currentUser=_currentUser.GetCurrentUsernameOnApp();
var licensePlateId=getlicenseplateid();
对于(var i=0;i<\u connection.GetBarcodeList().Count;i++)
{
var serialNumbersInsert=新列表
{
新序列号
{
SerialNumberLookupCode=材料列表[i],
NetWeight=Convert.ToDecimal(netWeightList[i])/100,
GrossWeight=Convert.ToDecimal(grossWeightList[i])/100,
LotLookupCode=lotList[i],
MaterialLookupCode=材料列表[i],
FullSerialNumberLookupCode=fullSerialNumberList[i],
CreatedSysDateTime=DateTime。现在,
ModifiedSysDateTime=DateTime。现在,
CreatedSysUser=currentUser,
ModifiedSysUser=currentUser,
LicensePlateId=LicensePlateId
}
};
foreach(SerialNumberInsert中的变量列表)
{
_unitOfWork.SerialNumber.Add(列表);
}
等待_unitOfWork.Complete();
}
}
我能够解决我的问题,我所做的是在循环中分配所有列表,然后将它们分配给数据库中的每一列
但我仍在寻找一种更好、更干净的方法来解决这个问题
private async void btn_SubmitData_Click(object sender, EventArgs e)
{
// parse list methods - represents each field of the database column
var materialList = ParseMaterial();
var lotList = ParseLot();
var netWeightList = ParseNetWeight();
var grossWeightList = ParseGrossWeight();
var serialNumberList = ParseSerialNumber();
var fullSerialNumberList = FullBarcode();
var currentUser = _currentUser.GetCurrentUsernameOnApp();
var licensePlateId = GetLicensePlateIds();
for (var i = 0; i < _connection.GetBarcodeList().Count; i++)
{
var serialNumbersInsert = new List<SerialNumber>
{
new SerialNumber
{
SerialNumberLookupCode = materialList[i],
NetWeight = Convert.ToDecimal(netWeightList[i]) / 100,
GrossWeight = Convert.ToDecimal(grossWeightList[i]) / 100,
LotLookupCode = lotList[i],
MaterialLookupCode = materialList[i],
FullSerialNumberLookupCode = fullSerialNumberList[i],
CreatedSysDateTime = DateTime.Now,
ModifiedSysDateTime = DateTime.Now,
CreatedSysUser = currentUser,
ModifiedSysUser = currentUser,
LicensePlateId = licensePlateId
}
};
foreach (var list in serialNumbersInsert)
{
_unitOfWork.SerialNumbers.Add(list);
}
await _unitOfWork.Complete();
}
}
private async void btn\u SubmitData\u单击(对象发送方,事件参数e)
{
//解析列表方法-表示数据库列的每个字段
var materialList=ParseMaterial();
var lotList=ParseLot();
var netWeightList=ParseNetWeight();
var grossWeightList=ParseGrossWeight();
var serialNumberList=ParseSerialNumber();
var fullSerialNumberList=FullBarcode();
var currentUser=_currentUser.GetCurrentUsernameOnApp();
var licensePlateId=getlicenseplateid();
对于(var i=0;i<\u connection.GetBarcodeList().Count;i++)
{
var serialNumbersInsert=新列表
{
新序列号
{
SerialNumberLookupCode=材料列表[i],
NetWeight=Convert.ToDecimal(netWeightList[i])/100,
GrossWeight=Convert.ToDecimal(grossWeightList[i])/100,
LotLookupCode=lotList[i],
MaterialLookupCode=材料列表[i],
FullSerialNumberLookupCode=fullSerialNumberList[i],
CreatedSysDateTime=DateTime。现在,
ModifiedSysDateTime=DateTime。现在,
CreatedSysUser=currentUser,
ModifiedSysUser=currentUser,
LicensePlateId=LicensePlateId
}
};
foreach(SerialNumberInsert中的变量列表)
{
_unitOfWork.SerialNumber.Add(列表);
}
等待_unitOfWork.Complete();
}
}
任何人都可以看到我的问题并在可能的情况下找到解决方案?有人能告诉我我的问题的解决方案吗?您的问题不清楚。您有这些字符串列表和一个SerialNumber类,但没有显示将列表分配给属性的位置。我想你是在试图以某种方式合并这些列表,还是将它们用作查找?我不知道,有很多方法。理想情况下,如果所有这些字段都在一个表中,您可以将其解析为单个记录而不是多个列表,进行验证和清理,然后立即插入整个记录。,任何人都可以看到我的问题,并在可能的情况下得到一些解决方案?有人能让我知道我的问题的解决方案吗?你的问题不清楚。您有这些字符串列表和一个SerialNumber类,但没有显示将列表分配给属性的位置。我想你是在试图以某种方式合并这些列表,还是将它们用作查找?我不知道,有很多方法。理想情况下,如果所有这些字段都在一个表中,您可以将其解析为单个记录,而不是多个列表,进行验证和清理,然后立即插入整个记录。对于初学者来说,这是少数。