我试图找出如何使用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#List:
"2324343"
"6572332"
"45122" ...
Run Code Online (Sandbox Code Playgroud)
我想用它们周围的括号替换所有这些,所以它们看起来像
"(2324343)"
"(6572332)"
"(45122)" ...
Run Code Online (Sandbox Code Playgroud)
我知道如何编写for循环并执行此操作,但我想知道是否有办法优先使用LINQ和LAMBDA表达式.我也对其他建议持开放态度.
非常感谢!
我有一个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>.
我有道理吗?那可能吗?有更好的选择吗?
我有一个集合,其中字段是字符串,但这些字符串可以有一个数值,例如:
myObject:{
examples:[
{example:"words",...},
{example:"more words",...},
{example:"111",...},
{example:"4502", ......}
...
]
...
}
如何以字符串格式查询"111"和"4502"以及任何其他数值?
我收到此错误:进程无法访问文件 (...),因为它正被另一个进程使用。我试过使用
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)
这似乎更好,因为如果我在第二次访问该页面时尝试访问另一个文件,它似乎会关闭/停止我的文件的进程。但是如果我第二次尝试访问同一个文件,它会再次给我错误。
我一直在编写一些BDD场景并从中编写自动化测试一段时间,但我仍处于发现阶段.
我可以看到Visual Studio为我提供了编写场景,场景大纲或场景模板的选项.
我已经想出了Scenario和Scenario Outline之间的区别(第一次运行一次,第二次运行的例子就像你放的那么多 - 如果我错了,请纠正我或添加一些东西).
但是我发现关于"场景模板"的信息很少.谁有人解释这个区别?谢谢!
我有一个来自代表日期的来源的字符串,就像这个"19941201" (年+月+日).
我需要它是"01/12/1994"或甚至"01-12-1994".
我正在使用linq从List中检索此数据.
这样做有"整洁"的方法吗?我用c#和.Net4.0!
c# ×5
.net ×2
asp.net ×2
linq ×2
bdd ×1
bulkinsert ×1
c#-4.0 ×1
generics ×1
gherkin ×1
lambda ×1
list ×1
mongo-shell ×1
mongodb ×1
specflow ×1
sql ×1
sql-server ×1
sqlbulkcopy ×1