本着this question的精神,我想知道你在Linq遇到过什么。我发布这个的原因是因为我今天遇到了一个脑筋急转弯,我希望与其他人分享。
注意:我已将其作为答案发布
答案 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文件中获取数据。它适用于我的简单测试用例,但在某些输入上它只是抛出一个空指针异常。你必须进行二元搜索才能找到有问题的行,这可能需要数小时。