从可能不返回任何行的LINQ查询中获取Max值的最佳方法是什么?如果我这样做
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select y.MyCounter).Max
Run Code Online (Sandbox Code Playgroud)
当查询没有返回任何行时,我收到错误.我可以
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select y.MyCounter _
Order By MyCounter Descending).FirstOrDefault
Run Code Online (Sandbox Code Playgroud)
但对于这样一个简单的请求,这感觉有点迟钝.我错过了一个更好的方法吗?
更新:这是后面的故事:我正在尝试从子表中检索下一个资格计数器(遗留系统,不要让我开始......).每个患者的第一个资格行总是1,第二个是2,等等(显然这不是子表的主键).因此,我正在为患者选择最大现有计数器值,然后向其中添加1以创建新行.当没有现有子值时,我需要查询返回0(因此添加1会给我一个计数器值1).请注意,我不想依赖子行的原始计数,以防遗留应用程序在计数器值中引入间隙(可能).我试图让这个问题过于通用我不好.