小编Ben*_*sen的帖子

LINQPad [扩展]方法

有没有人有完整的LINQPad扩展方法和方法列表,例如

.Dump()

SubmitChanges()
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework linqpad linq-to-sql

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

为什么.Net 4.0中的新Tuple类型是引用类型(类)而不是值类型(struct)

有谁知道答案和/或有关于它的意见?

由于元组通常不会很大,我认为使用结构比使用类更有意义.怎么说你?

performance struct class .net-4.0

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

Directory.EnumerateFiles => UnauthorizedAccessException

.NET 4.0中有一个很好的新方法,可以通过枚举以流方式获取目录中的文件.

这里的问题是,如果想要枚举所有文件,可能事先不知道哪些文件或文件夹受到访问保护并且可能抛出UnauthorizedAccessException.

要重现,可以运行此片段:

foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories))
{
   // whatever
}
Run Code Online (Sandbox Code Playgroud)

在此.NET方法存在之前,通过在字符串数组返回方法上实现递归迭代器,可以实现大致相同的效果.但它并不像新的.NET方法那么懒惰.

那么该怎么办?使用此方法时,UnauthorizedAccessException可以被抑制还是生活中的事实?

在我看来,该方法应该有一个重载接受一个动作来处理任何异常.

.net filesystems lazy-evaluation unauthorizedaccessexcepti

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

DataGrid绑定命令到行选择

我想在用户选择DataGrid中的行时执行命令.

我看到有可能将单元格内容包装在按钮中(虽然我不想要按钮样式) - 但我不想在单元级别进行.

我还看到可以使用行为将命令链接到事件.但最好不要为了这样一个共同的任务而采取行动.

是否可以通过普通的旧命令数据绑定来完成此操作?

所以:1)用户点击DataGrid行2)命令对视图模型进行了触发.

提前致谢.

data-binding wpf select datagrid command

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

适用于.NET的高效,不可变,可扩展的集合

在我看来,.NET存在极端缺乏安全,不可变的集合类型,特别是BCL,但我还没有看到很多工作在外面完成.有没有人有任何指向(优选)生产质量,快速,不可变的.NET集合库.快速列表类型是必不可少的.我还没准备好切换到F#.

*编辑:注意搜索者,很快就会进入BCL: .NET不可变集合

c# immutability base-class-library

14
推荐指数
4
解决办法
4142
查看次数

从EF Code-First DbContext类生成SQL CE数据库

我已经以Entity Framework Code-First约定的方式定义了一组类,并使用System.ComponentModel.DataAnnotations属性注释了类属性.

现在我想从此代码生成SQL Server Compact Edition(SCSE)(4.0)数据库.

需要什么代码才能执行此操作以及需要导入哪些程序集?

到目前为止,我已导入C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition\v4.0\Desktop {System.Data.SqlServerCe.dll,System.Data.SqlServerCe.Entity\System.Data.SqlServerCe. Entity.dll} dll文件.

任何指针赞赏.文章和诸如此类的.

.net entity-framework code-first sql-server-ce ef-code-first

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

F#和接口实现的成员

我有一个令人烦恼的错误.

type Animal =

    abstract member Name : string

type Dog (name : string) =

    interface Animal with

        member this.Name : string =
            name

let pluto = new Dog("Pluto")
let name = pluto.Name
Run Code Online (Sandbox Code Playgroud)

最后一行,特别是"Name"生成编译器错误,指出"未定义字段,构造函数或成员'Name'".

我用过的解决方法是写

let name = (pluto :> Animal).Name
Run Code Online (Sandbox Code Playgroud)

然而,这非常烦人并且产生许多视觉噪音.是否可以在F#中执行某些操作以便能够解析Name而不会明确告诉编译器Name是Animal类型的派生成员?

f# overloading interface explicit-interface overload-resolution

13
推荐指数
2
解决办法
3501
查看次数

Try-Catch Async Exceptions

这个例子"失败":

static async void Main(string[] args)
{
    try
    {
        await TaskEx.Run(() => { throw new Exception("failure"); });
    }
    catch (Exception)
    {
        throw new Exception("success");
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,文本"失败"的例外会冒泡.

然后我尝试了这个解决方法:

static async void Main(string[] args)
{
    try
    {
        await SafeRun(() => { throw new Exception("failure"); });
    }
    catch (Exception)
    {
        throw new Exception("success");
    }
}

static async Task SafeRun(Action action)
{
    var ex = default(Exception);
    await TaskEx.Run(() =>
    {
        try
        {
            action();
        }
        catch (Exception _)
        {
            ex = _;
        }
    }); …
Run Code Online (Sandbox Code Playgroud)

c# exception async-await c#-5.0

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

[优化此项]:慢速LINQ到对象查询

我有这个问题困扰着我; 它被封装为一个新的查询运算符,我制作了两个版本,试图看看哪个更好.两者表现得非常糟糕.

第一次尝试; 陈述式

public static IEnumerable<IEnumerable<?>> Section<?>(this IEnumerable<?> source, int length)
{
    return source.Any()
        ? source.Take(length).Cons(source.Skip(length).Section(length))
        : Enumerable.Empty<IEnumerable<?>>();
}
Run Code Online (Sandbox Code Playgroud)

第二次尝试:势在必行的"收益率回报"风格

public static IEnumerable<IEnumerable<?>> Section<?>(this IEnumerable<?> source, int length)
{
    var fst = source.Take(length);
    var rst = source.Skip(length);

    yield return fst;

    if (rst.Any())
        foreach (var section in rst.Section(length))
            yield return section;
}
Run Code Online (Sandbox Code Playgroud)

事实上,第二次尝试在可读性,组合性和速度方面都更糟糕.

关于如何优化这个的任何线索?

c# linq optimization performance linq-to-objects

8
推荐指数
2
解决办法
3279
查看次数

LINQ到对象优化技术?

你使用LINQ to Objects优化技术或者你在野外看到了什么?

在等待"产生foreach"和其他语言/编译器优化到201x中的C#时,我很有意思尽一切可能使LINQ在任何地方使用,而不是性能上的痛苦.

到目前为止,我看到的一种模式是为特定的组合器创建自定义的IEnumerable实现,这样可以多次重新枚举枚举.

optimization performance linq-to-objects

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