我正在使用.NET 3.5,尝试使用以下命令递归删除目录:
Directory.Delete(myPath, true);
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果文件正在使用或存在权限问题,这应该抛出,否则它应该删除目录及其所有内容.
但是,我偶尔会得到这个:
System.IO.IOException: The directory is not empty.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive)
...
Run Code Online (Sandbox Code Playgroud)
我对这种方法有时会抛出并不感到惊讶,但是当递归为真时,我很惊讶地得到这条特殊的信息.(我知道目录不是空的.)
有没有理由我看到这个而不是AccessViolationException?
我正在使用.NET 3.5.我有两个字符串数组,可以共享一个或多个值:
string[] list1 = new string[] { "apple", "orange", "banana" };
string[] list2 = new string[] { "banana", "pear", "grape" };
Run Code Online (Sandbox Code Playgroud)
我想要一种方法将它们合并到一个没有重复值的数组中:
{ "apple", "orange", "banana", "pear", "grape" }
Run Code Online (Sandbox Code Playgroud)
我可以用LINQ做到这一点:
string[] result = list1.Concat(list2).Distinct().ToArray();
Run Code Online (Sandbox Code Playgroud)
但我想这对大型阵列来说效率不高.
有没有更好的办法?
我正在使用C#和.NET 3.5.我需要生成并存储一些T-SQL插入语句,稍后将在远程服务器上执行.
例如,我有一个Employees数组:
new Employee[]
{
new Employee { ID = 5, Name = "Frank Grimes" },
new Employee { ID = 6, Name = "Tim O'Reilly" }
}
Run Code Online (Sandbox Code Playgroud)
我需要最终得到一个字符串数组,如下所示:
"INSERT INTO Employees (id, name) VALUES (5, 'Frank Grimes')",
"INSERT INTO Employees (id, name) VALUES (6, 'Tim O''Reilly')"
Run Code Online (Sandbox Code Playgroud)
我正在看一些使用String.Format创建insert语句的代码,但这感觉不对.我考虑使用SqlCommand(希望做这样的事情),但它没有提供将命令文本与参数组合的方法.
仅仅替换单引号并构建字符串就足够了吗?
string.Format("INSERT INTO Employees (id, name) VALUES ({0}, '{1}')",
employee.ID,
replaceQuotes(employee.Name)
);
Run Code Online (Sandbox Code Playgroud)
这样做时我应该关注什么?源数据相当安全,但我不想做太多假设.
编辑:只是想指出在这种情况下,我没有SqlConnection或任何方式直接连接到SQL Server.这个特定的应用程序需要生成sql语句并将它们排队等待在其他地方执行 - 否则我将使用SqlCommand.Parameters.AddWithValue()
我有一些基本的一对多关系的模型类.例如,一本书有很多食谱,每个食谱都有很多成分:
class Book(models.Model):
name = models.CharField(max_length=64)
class Recipe(models.Model):
book = models.ForeignKey(Book)
name = models.CharField(max_length=64)
class Ingredient(models.Model):
text = models.CharField(max_length=128)
recipe = models.ForeignKey(Recipe)
Run Code Online (Sandbox Code Playgroud)
我想要一份特定书籍所有食谱中所有成分的清单.用Python表达这个的最好方法是什么?
如果我使用LINQ,我可能会写这样的东西:
var allIngredients = from recipe in book.Recipes
from ingredient in recipe.Ingredients
select ingredient;
Run Code Online (Sandbox Code Playgroud) 我在.NET 3.5中使用了一个Adorner,我可以通过重写OnRender来绘制,但我需要能够重新绘制装饰来改变它的外观.
基本上我正在寻找一种方法来清除绘图上下文并再次调用OnRender.什么是最好的方法,还是有更好的方法?
public class MyAdorner : Adorner
{
private Brush brush = Brushes.Red;
public DragArrowAdorner(UIElement adornedElement) : base(adornedElement)
{}
public void RedrawWithBrush(Brush newBrush)
{
brush = newBrush;
// redraw..?
}
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
// some drawing code...
drawingContext.DrawRectangle(
brush,
null,
new Rect(AdornedElement.DesiredSize));
}
}
Run Code Online (Sandbox Code Playgroud)