Entity Framework를 사용하여 열의 최대 값을 얻는 방법은 무엇입니까?
정수를 포함하는 열의 최대 값을 얻으려면 다음 T-SQL 명령을 사용할 수 있습니다.
SELECT MAX(expression )
FROM tables
WHERE predicates;
Entity Framework로 동일한 결과를 얻을 수 있습니까?
다음 모델이 있다고 가정 해 보겠습니다.
public class Person
{
public int PersonID { get; set; }
public int Name { get; set; }
public int Age { get; set; }
}
가장 나이 많은 사람의 나이를 어떻게 알 수 있습니까?
int maxAge = context.Persons.?
이 시도 int maxAge = context.Persons.Max(p => p.Age);
그리고 using System.Linq;
파일 상단에
목록이 비어 있으면 예외가 발생합니다. 이 솔루션은 다음 문제를 고려합니다.
int maxAge = context.Persons.Select(p => p.Age).DefaultIfEmpty(0).Max();
또는 이것을 시도 할 수 있습니다.
(From p In context.Persons Select p Order By age Descending).FirstOrDefault
필터를 추가하려면 도움이 될 수 있습니다.
context.Persons
.Where(c => c.state == myState)
.Select(c => c.age)
.DefaultIfEmpty(0)
.Max();
maxAge = Persons.Max(c => c.age)
또는 그 라인을 따라 뭔가.
에서 VB.Net 는 것
Dim maxAge As Integer = context.Persons.Max(Function(p) p.Age)
많은 사람들이 말했듯이-이 버전
int maxAge = context.Persons.Max(p => p.Age);
테이블이 비어 있으면 예외가 발생합니다.
사용하다
int maxAge = context.Persons.Max(x => (int?)x.Age) ?? 0;
또는
int maxAge = context.Persons.Select(x => x.Age).DefaultIfEmpty(0).Max()
선택한 답변은 예외를 throw하고 Carlos Toledo의 답변은 데이터베이스에서 모든 값을 검색 한 후 필터링을 적용합니다.
다음은 단일 왕복을 실행하고 예외없이 가능한 모든 인덱스를 사용하여 단일 값을 읽습니다.
int maxAge = _dbContext.Persons
.OrderByDescending(p => p.Age)
.Select(p => p.Age)
.FirstOrDefault();
열은 nullable입니다.
int maxAge = context.Persons.Select(p => p.Age).Max() ?? 0;
열이 null이 아닙니다.
int maxAge = context.Persons.Select(p => p.Age).Cast<int?>().Max() ?? 0;
두 경우 모두 두 번째 코드를 사용할 수 있습니다. 을 사용 DefaultIfEmpty
하면 서버에서 더 큰 쿼리를 수행하게됩니다. 관심있는 사람들을 위해 다음은 EF6에 상응하는 것입니다.
없이 쿼리 DefaultIfEmpty
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
MAX([Extent1].[Age]) AS [A1]
FROM [dbo].[Persons] AS [Extent1]
) AS [GroupBy1]
쿼리 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]
참고 URL : https://stackoverflow.com/questions/7542021/how-to-get-max-value-of-a-column-using-entity-framework
'your programing' 카테고리의 다른 글
Android Manifest 애플리케이션에 둘 이상의`tools : replace`를 추가하는 방법은 무엇입니까? (0) | 2020.10.11 |
---|---|
jQuery draggable이 페이지 스크롤 후 잘못된 위치에 도우미를 표시합니다. (0) | 2020.10.11 |
Android에서 json 파일 읽기 (0) | 2020.10.11 |
파이썬 스크립트를 실행하는 Windows 컴퓨터의 이름을 얻고 있습니까? (0) | 2020.10.11 |
둘 다에 대해 0-255 범위에서 RGB를 HSV로, HSV를 RGB로 변환하는 알고리즘 (0) | 2020.10.11 |