Cột của bạn không có giá trị
int maxAge = context.Persons.Select(p => p.Age).Max() ?? 0;
Cột của bạn không thể nullable
int maxAge = context.Persons.Select(p => p.Age).Cast<int?>().Max() ?? 0;
Trong cả hai trường hợp, bạn có thể sử dụng mã thứ hai. Nếu bạn sử dụng DefaultIfEmpty, bạn sẽ thực hiện một truy vấn lớn hơn trên máy chủ của mình. Đối với những người quan tâm, đây là EF6 tương đương:
Truy vấn không có DefaultIfEmpty
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
MAX([Extent1].[Age]) AS [A1]
FROM [dbo].[Persons] AS [Extent1]
) AS [GroupBy1]
Truy vấn với DefaultIfEmpty
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
MAX([Join1].[A1]) AS [A1]
FROM ( SELECT
CASE WHEN ([Project1].[C1] IS NULL) THEN 0 ELSE [Project1].[Age] END AS [A1]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
LEFT OUTER JOIN (SELECT
[Extent1].[Age] AS [Age],
cast(1 as tinyint) AS [C1]
FROM [dbo].[Persons] AS [Extent1]) AS [Project1] ON 1 = 1
) AS [Join1]
) AS [GroupBy1]