相关疑难解决方法(0)

创建大量对象时内存不足C#

我正在处理我的应用程序中的100万条记录,这是从MySQL数据库中检索的.为此,我使用Linq获取记录并使用.Skip()和.Take()一次处理250条记录.对于每个检索到的记录,我需要创建0到4个项目,然后将其添加到数据库中.因此,必须创建的项目总数平均约为200万.

IQueryable<Object> objectCollection = dataContext.Repository<Object>();
int amountToSkip = 0;
IList<Object> objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
while (objects.Count != 0)
        {
            using (dataContext = new LinqToSqlContext(new DataContext()))
            {
                foreach (Object objectRecord in objects)
                {
                    // Create 0 - 4 Random Items
                    for (int i = 0; i < Random.Next(0, 4); i++)
                    {
                        Item item = new Item();
                        item.Id = Guid.NewGuid();
                        item.Object = objectRecord.Id;
                        item.Created = DateTime.Now;
                        item.Changed = DateTime.Now;
                        dataContext.InsertOnSubmit(item);
                    }
                }
                dataContext.SubmitChanges();
            }
            amountToSkip += 250;
            objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
        }
Run Code Online (Sandbox Code Playgroud)

现在,在创建Items时出现问题.运行应用程序(甚至不使用dataContext …

c# memory object out-of-memory linq-to-sql

15
推荐指数
2
解决办法
7436
查看次数

LINQ Skip()问题

下面的C#语句会阻止进程,如果itemToSkip大于0,则无法检索数据.

 int itemToSkip = 100;
 int itemToTake = 1000;

 var itemList = db.MYTABLEs.Skip(itemToSkip).Take(itemToTake).ToList();
Run Code Online (Sandbox Code Playgroud)

我该如何解决?问题是什么?

c# sql linq

5
推荐指数
1
解决办法
5070
查看次数

标签 统计

c# ×2

linq ×1

linq-to-sql ×1

memory ×1

object ×1

out-of-memory ×1

sql ×1