C# XamarinAndroid:创建SQLite DB表中某些条目副本的有效方法

C# XamarinAndroid:创建SQLite DB表中某些条目副本的有效方法,c#,sqlite,xamarin,xamarin.android,android-sqlite,C#,Sqlite,Xamarin,Xamarin.android,Android Sqlite,我有一个Xamarin C Android应用程序,可以处理一些客户信息。我使用以下方法从SQLite DB读取连接存储在全局变量globalVars.DB中,并使用另一个全局变量globalVars.customer中存储的名称为特定客户提供一些引号。 给定我传递给这个方法的数字n,我只想在用更通用的名称(如默认客户1、默认客户2等)替换客户名称后,将此客户信息的n个副本创建到DB的同一个表中。 下面的代码按预期工作,但似乎相对较慢,尤其是当n为3或更多时。 有没有更有效的方法来实现我的目标

我有一个Xamarin C Android应用程序,可以处理一些客户信息。我使用以下方法从SQLite DB读取连接存储在全局变量globalVars.DB中,并使用另一个全局变量globalVars.customer中存储的名称为特定客户提供一些引号。 给定我传递给这个方法的数字n,我只想在用更通用的名称(如默认客户1、默认客户2等)替换客户名称后,将此客户信息的n个副本创建到DB的同一个表中。 下面的代码按预期工作,但似乎相对较慢,尤其是当n为3或更多时。 有没有更有效的方法来实现我的目标

private void cloneCustomer(int n)
    {
        var tableQuotes = from d in globalVars.Db.Table<dbQuotes>()
                          where d.CustomerName == globalVars.Customer
                          select d;

        for (int i = 1; i <= n; i++)
        {
            foreach (var quote in tableQuotes)
            {
                quote.CustomerName = "Default customer " + i;
                globalVars.Db.Insert(quote);
            }
        }
    }

将插入循环块包装到单个事务中

private void cloneCustomer(int n)
    {
        var tableQuotes = from d in globalVars.Db.Table<dbQuotes>()
                          where d.CustomerName == globalVars.Customer
                          select d;

        globalVars.Db.RunInTransaction(() => {

          for (int i = 1; i <= n; i++) {
            foreach (var quote in tableQuotes){              
                quote.CustomerName = "Default customer " + i;
                globalVars.Db.Insert(quote);
             }
           }

       });
}

谢谢你的回答。这个更改会做什么?这将把每个插入的事务调用从循环包装到单个事务中。这将加快插入过程