小编Jas*_*son的帖子

无法使用Directory.Delete删除目录(路径,true)

我正在使用.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 c# io exception

371
推荐指数
9
解决办法
22万
查看次数

在.NET中有效地合并字符串数组,保持不同的值

我正在使用.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# linq arrays merge distinct

39
推荐指数
2
解决办法
4万
查看次数

将安全的SQL语句创建为字符串

我正在使用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()

.net c# sql stringbuilder concatenation

11
推荐指数
3
解决办法
3万
查看次数

在Django中展平一对多的关系

我有一些基本的一对多关系的模型类.例如,一本书有很多食谱,每个食谱都有很多成分:

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)

python django list flatten

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

装饰者内部的动画(调用OnRender)

我在.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)

.net c# wpf adorner

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

标签 统计

c# ×4

.net ×3

adorner ×1

arrays ×1

concatenation ×1

distinct ×1

django ×1

exception ×1

flatten ×1

io ×1

linq ×1

list ×1

merge ×1

python ×1

sql ×1

stringbuilder ×1

wpf ×1