小编Jen*_*nha的帖子

使用C#在SQL Server上的临时表中插入3万行的最快方法

我试图找出如何使用c#在SQL Server的临时表中提高插入性能.有些人说我应该使用SQLBulkCopy但是我必须做错了,因为它似乎比简单地构建一个SQL插入字符串慢得多.

我使用SQLBulkCopy创建表的代码如下:

public void MakeTable(string tableName, List<string> ids, SqlConnection connection)
    {

        SqlCommand cmd = new SqlCommand("CREATE TABLE ##" + tableName + " (ID int)", connection);
        cmd.ExecuteNonQuery();

        DataTable localTempTable = new DataTable(tableName);

        DataColumn id = new DataColumn();
        id.DataType = System.Type.GetType("System.Int32");
        id.ColumnName = "ID";
        localTempTable.Columns.Add(id);

        foreach (var item in ids)
        {
             DataRow row = localTempTable.NewRow();
             row[0] = item;
             localTempTable.Rows.Add(row);
             localTempTable.AcceptChanges();
        }


        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
        {
            bulkCopy.DestinationTableName = "##" + tableName;
            bulkCopy.WriteToServer(localTempTable);

        }
    }
Run Code Online (Sandbox Code Playgroud)

这样我的插入需要很长时间才能运行.我让插件以另一种方式更快地工作:

我将insert位创建为一个字符串,并在我的SQL create temp table语句中加入它: …

c# sql sql-server bulkinsert sqlbulkcopy

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

C#用LINQ替换List <string>的所有元素

我有一个包含数千个字符串的C#List:

"2324343"
"6572332"
"45122" ...
Run Code Online (Sandbox Code Playgroud)

我想用它们周围的括号替换所有这些,所以它们看起来像

"(2324343)"
"(6572332)"
"(45122)" ...
Run Code Online (Sandbox Code Playgroud)

我知道如何编写for循环并执行此操作,但我想知道是否有办法优先使用LINQ和LAMBDA表达式.我也对其他建议持开放态度.

非常感谢!

c# linq generics lambda list

13
推荐指数
1
解决办法
6252
查看次数

'将'Dictionary <string,int>转换为List <object>

我有一个Dictionary<string,int> dictionary1,我需要将其转换为具有properties = dictionary1.key和= dictionary1.value 的List<Data>where .我不想使用for/foreach循环(由我自己编写),因为为了避免它我试图使用Dictionary.Datalablevalue

另一个选择是有两个不同的词典(dictionary2和dictionary3)where dictionary2<string,keyOfDictionary1>dictionary3<string,valueOfDictionary1>.

我有道理吗?那可能吗?有更好的选择吗?

.net c# linq

9
推荐指数
2
解决办法
1万
查看次数

MongoDB - 如何只选择数字字符串/检查字符串是否为mongo-shell中的数字

我有一个集合,其中字段是字符串,但这些字符串可以有一个数值,例如:

myObject:{
examples:[
         {example:"words",...},
         {example:"more words",...},
         {example:"111",...},
         {example:"4502", ......}
         ...
         ]
...
}

如何以字符串格式查询"111"和"4502"以及任何其他数值?

mongodb mongo-shell

6
推荐指数
1
解决办法
5351
查看次数

写入文件 ASP.NET C# 并且之后不锁定它们

我收到此错误:进程无法访问文件 (...),因为它正被另一个进程使用。我试过使用 File.WriteAllText;

StreamWriter sw = new StreamWriter(myfilepath);
                sw.Write(mystring);
                sw.Close();
                sw.Dispose();
Run Code Online (Sandbox Code Playgroud)

;

using (FileStream fstr = File.Create(myfilepath))
                {
                StreamWriter sw = new StreamWriter(myfilepath);
                sw.Write(mystring);
                sw.Close();
                sw.Dispose();
                fstr.Close();
                }
Run Code Online (Sandbox Code Playgroud)

我想要做的就是访问一个文件,在上面写,然后关闭它。我可能犯了一个愚蠢的错误,但我想了解我做错了什么以及为什么。如何确保文件已关闭并且不会再次导致此错误。

到目前为止,在答案的帮助下,我做到了:

using (FileStream fstr = File.Open(myfilepath,FileMode.OpenOrCreate,FileAccess.ReadWrite))
                {
                    StreamWriter sw = new StreamWriter(fstr);
                    sw.Write(mystring);
                    sw.Close();


                }
Run Code Online (Sandbox Code Playgroud)

这似乎更好,因为如果我在第二次访问该页面时尝试访问另一个文件,它似乎会关闭/停止我的文件的进程。但是如果我第二次尝试访问同一个文件,它会再次给我错误。

c# asp.net

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

BDD SpecFlow场景类型

我一直在编写一些BDD场景并从中编写自动化测试一段时间,但我仍处于发现阶段.

我可以看到Visual Studio为我提供了编写场景,场景大纲或场景模板的选项.

我已经想出了Scenario和Scenario Outline之间的区别(第一次运行一次,第二次运行的例子就像你放的那么多 - 如果我错了,请纠正我或添加一些东西).

但是我发现关于"场景模板"的信息很少.谁有人解释这个区别?谢谢!

bdd specflow gherkin

3
推荐指数
1
解决办法
1698
查看次数

从列表c#.Net 4格式化字符串"yyyyMMdd"到"dd/MM/yyyy"

我有一个来自代表日期的来源的字符串,就像这个"19941201" (年+月+日).

我需要它是"01/12/1994"或甚至"01-12-1994".

我正在使用linqList中检索此数据.

这样做有"整洁"的方法吗?我用c#和.Net4.0!

.net c# asp.net c#-4.0

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