我想找到一种最快的方法,用一次Linq to SQL往返来获取表中一列的最小值和最大值。因此,我知道这将在两次往返中起作用:
int min = MyTable.Min(row => row.FavoriteNumber); int max = MyTable.Max(row => row.FavoriteNumber);
我知道我可以使用,group但没有group by子句,我想汇总整个表!而且我不能在没有分组的情况下使用.Min。我确实尝试过:
group
group by
from row in MyTable group row by true into r select new { min = r.Min(z => z.FavoriteNumber), max = r.Max(z => z.FavoriteNumber) }
但是那个疯狂的group子句看起来很愚蠢,并且它生成的SQL比需要的要复杂。
因此,有什么方法可以获取正确的SQL?
编辑:这些人也失败了:Linq to SQL:如何在没有分组依据的情况下进行汇总?…如果真的没有答案,则由LINQ设计师进行la脚的监督。
编辑2:在SQL Server Management Studio执行计划分析中,我查看了自己的解决方案(使用荒谬的常量group by子句),在我看来,它与由以下人员生成的计划相同:
SELECT MIN(FavoriteNumber), MAX(FavoriteNumber) FROM MyTable
因此,除非有人能提出一个简单或相等的好答案,否则我认为我必须将其标记为“我自己回答”。有什么想法吗?
如问题中所述,此方法似乎实际上生成了最佳的SQL代码,因此,尽管在LINQ中看起来有点怪异,但它应该是最佳的性能。