批处理大型数据集上的C#运行函数

时间:2018-07-27 09:41:40

标签: c# asp.net-mvc multithreading parallel-processing

有什么方法可以在c#中的多个线程上与大型数据集的批处理并行运行一个函数?

所以我有一个大约32000行的数据列表。我运行下面的函数,该函数读取数据集的每一行并进行验证。想法是将数据集分成5000个数据块,然后将下面的函数同时应用于每个数据块/批次。

    private void AccountNumberCheck(List<Invoice> invoices, string VendorID)
    {
        try
        {
            using (var context = new ApplicationContext())
            {
                foreach (var invoice in invoices)
                {
                    var invoiceDB = context.Invoices.Find(invoice.Id);
                    var accountNumber = context.Accounts.Where(m => m.Account_Number == invoice.Account_Number && m.VendorID == VendorID);
                    if (accountNumber.Count() > 0)
                    {
                        var activeAccount = accountNumber.Any(m => m.Active_Status == false);
                        if (activeAccount == true)
                        {
                            invoiceDB.ExceptionFlag = true;
                            invoiceDB.ExceptionComments = invoiceDB.ExceptionComments + "The Account Number is Inactive.";
                        }
                        else
                        {
                            invoiceDB.ExceptionFlag = false;
                        }

                    }
                    else
                    {
                        invoiceDB.ExceptionFlag = true;
                        invoiceDB.ExceptionComments = invoiceDB.ExceptionComments + "The Account Number does not exist. ";
                    }

                    context.Entry(invoiceDB).State = EntityState.Modified;
                    context.SaveChanges();

                }
            }
        }
        catch (Exception ex)
        {
        }
    }

0 个答案:

没有答案