当前位置:  开发笔记 > 编程语言 > 正文

最酷的C#LINQ/Lambdas技巧你曾经拉过吗?

如何解决《最酷的C#LINQ/Lambdas技巧你曾经拉过吗?》经验,为你挑选了4个好方法。

看到一篇关于C#中隐藏功能的帖子,但很多人都没有写过linq/lambdas的例子......所以......我想知道......

你见过/写过的C#LINQ和/或Lambdas /匿名代表的最酷(最优雅)是什么?

奖金,如果它也投入生产!



1> Markus Olsso..:

在LINQ光线跟踪肯定顶我的名单=)

我不太确定它是否优雅,但它肯定是我见过的最酷的linq表达式!

哦,只是非常清楚; 我并没有把它写(卢克·霍本一样)



2> Chris Ammerm..:

一些基本功能:

public static class Functionals
{
    // One-argument Y-Combinator.
    public static Func Y(Func, Func> F)
    {
        return t => F(Y(F))(t);
    }

    // Two-argument Y-Combinator.
    public static Func Y(Func, Func> F)
    {
        return (t1, t2) => F(Y(F))(t1, t2);
    }

    // Three-arugument Y-Combinator.
    public static Func Y(Func, Func> F)
    {
        return (t1, t2, t3) => F(Y(F))(t1, t2, t3);
    }

    // Four-arugument Y-Combinator.
    public static Func Y(Func, Func> F)
    {
        return (t1, t2, t3, t4) => F(Y(F))(t1, t2, t3, t4);
    }

    // Curry first argument
    public static Func> Curry(Func F)
    {
        return t1 => t2 => F(t1, t2);
    }

    // Curry second argument.
    public static Func> Curry2nd(Func F)
    {
        return t2 => t1 => F(t1, t2);
    }

    // Uncurry first argument.
    public static Func Uncurry(Func> F)
    {
        return (t1, t2) => F(t1)(t2);
    }

    // Uncurry second argument.
    public static Func Uncurry2nd(Func> F)
    {
        return (t1, t2) => F(t2)(t1);
    }
}

如果您不知道如何使用它们,请不要做太多好事.为了了解这一点,您需要知道它们的用途:

什么是currying?

什么是y组合器?


为什么这仍然不是.net标准功能?

3> gjvdkamp..:

到目前为止,我遇到的最令人印象深刻的Linq实现是Brahma框架.

它可以用于使用"Linq to GPU"将并行计算卸载到GPU.您在linq中编写了一个"查询",然后Brahma将其转换为HLSL(高级着色器语言),以便DirectX可以在GPU上处理它.

这个网站只允许我粘贴一个链接,所以尝试从dotnetrocks这个网络广播:

http://www.dotnetrocks.com/default.aspx?showNum=466

另外谷歌为Brahma项目,你会得到正确的页面.

非常酷的东西.

GJ



4> Samuel Jack..:

长期运行的LINQ查询的进度报告.在博客文章中,您可以找到一个扩展方法WithProgressReporting(),它允许您在执行时发现并报告linq查询的进度.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有