Linq to SQLについて質問があります。

現在DBから特定のIDの最大値を取得する問合せをしているのですが、生成されるSQL文があまり効率のいいものではありません。
どの様に記述すれば効率の良いSQLが生成されるか、ご教示いただけないでしょうか。

【期待値】
 SELECT MAX(Id) FROM TestTable

【検証1】
 ■期待値のSQLが発行されるが、レコードが無い場合例外となる
 System.Data.Linq.Table<Test> table = context.GetTable<Test>();
table.Max(i => i.Id);

【検証2】
 ■レコードが無い場合はnullとして結果が返るが、期待したSQLではない
 System.Data.Linq.Table<Test> table = context.GetTable<Test>();
table.Max(i => (int?)i.Id);

 〇生成されたSQL(サブクエリが生成されてしまう)
SELECT MAX([t1].[value]) AS [value]
FROM (
SELECT [t0].[Id] AS [value]
FROM [TestTable] AS [t0]
) AS [t1]

よろしくお願いいたします。