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