您遇到过哪些Linq Gotchas?

时间:2010-09-06 23:26:54

标签: .net linq

本着this question的精神,我想知道你在Linq遇到过什么。我发布这个的原因是因为我今天遇到了一个脑筋急转弯,我希望与其他人分享。

注意:我已将其作为答案发布

3 个答案:

答案 0 :(得分:0)

我今天巧妙地看到了这一点

        Dim Activity = (From al In user.ActivityLogs
                        Take 2
                        Select al.ActivityDate
                        Order By ActivityDate Descending)

虽然这“工作”,但在调用“Order By”之前调用“Take”,这会导致查询返回“Top 2,Order By Ascending”,然后简单地反转命令后返回的两个记录。事实。

如果要提取表格中的最后两条记录,则需要使用以下

        Dim Activity = (From al In user.ActivityLogs
                        Select al.ActivityDate
                        Order By ActivityDate Descending).Take(2)

这将命令呼叫降序,然后获取前2个记录。

对我来说这是一个“陷阱”因为我“ASSumed”语法将是从SQL平滑过渡

Select Top 2 ActivityDate From ActivityLogs Order By ActivityDate Descending

答案 1 :(得分:0)

对我来说,它主要以LINQ to SQL的形式出现,其中生成的SQL与我想象的完全不同,主要是因为在某些条件下需要括号。或者,某些关键字不受支持,就像我预期的那样。

此外,当我最初使用LINQ时,处理与生成的对象相关的上下文是一个大开眼界。

最后,一位开发人员将计算逻辑嵌入到LINQ查询中,这使得更难弄清楚计算出错的地方......这主要是设计问题,但LINQ有助于使流程复杂化......

答案 2 :(得分:0)

我遇到的最大问题是缺乏调试器支持。基本上,当它工作时,Linq很好。但是当它没有时,调试比组装更难。例如,我试图用它来从Excel XML文件中获取数据。它适用于我的简单测试用例,但在某些输入上它只是抛出一个空指针异常。你必须进行二元搜索才能找到有问题的行,这可能需要数小时。