类型' System.OutOfMemoryException'的例外情况发生在.dll但未在用户代码中处理

时间:2017-02-02 09:06:12

标签: c# sql-server list out-of-memory

我在sql server中有一个表 行数:1229502
列数:56
TotatlSpaceInKB:292616

当我获取完整的表格并在C#中填充DataTable时,它会给出一个' System.OutOfMemoryException'。
所以我决定以2个块的形式获取表格并填充2个不同的DataTables,这些都有效。

但根据要求,我必须将所有数据存储在List中,
不幸的是,将两个DataTable存储在同一个List中会产生异常。 将一个表转换为列表顺利进行,但是当我将第二个表存储在同一个列表中时,它会出错。

我通过以下代码将DataTable转换为List

//CC_Data is DataTable
//CC_List is List<Cent_Compilation>
//Cent_Compilation is class with same properties as in Database
foreach (DataRow row in CC_Data.Rows)
                {
                    Compilation_Methods.CC_List.Add(Compilation_Methods.populateClassObject(row, CC_Data));
                }

populateClassObject是转换方法

public static Cent_Compilation populateClassObject(DataRow row, DataTable table)
        {
            using (Cent_Compilation CC = new Cent_Compilation())
            {
                try
                {
                    PropertyInfo[] columns;

                    Type myType = (typeof(Cent_Compilation));
                    columns = myType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

                    object data = null;
                    foreach (var column in columns)
                    {

                        if (table.Columns.Contains(column.Name))
                        {
                            data = DBSupport.ExtractData(row, column.Name);
                            if (data != null)
                            {
                                column.SetValue(CC, DBSupport.FindNReplaceDataType(data, column.PropertyType), null);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {

                    //Log.Add("Error in Method populateClassObject Class Inter_Data" + ex.Message);
                }

                return CC;
            }
        }

这就是异常的样子:

enter image description here

0 个答案:

没有答案