Winforms 将多个方法返回列表中的数据插入c中的数据库时出错#

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()

我需要部分代码的帮助,请看以下内容:

正如您在下面看到的,我有6个方法解析传入数据,然后将其作为列表返回,所以我的问题是将该列表数据发送到我的数据库表SerialNumber,列表的每个方法都是一个单独的字段,将填充数据库列

例如,解析材料将填充数据库materiallookupcode列,其他材料也是如此

这是数据库表的图像

下面是所有5个方法的代码,它们读取数据然后返回,我需要将这些数据发送到我的数据库

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类,但没有显示将列表分配给属性的位置。我想你是在试图以某种方式合并这些列表,还是将它们用作查找?我不知道,有很多方法。理想情况下,如果所有这些字段都在一个表中,您可以将其解析为单个记录,而不是多个列表,进行验证和清理,然后立即插入整个记录。对于初学者来说,这是少数。