[SQL] 엔티티 프레임 워크에 대한 SQL 그룹-으로 카운트
SQL엔티티 프레임 워크에 대한 SQL 그룹-으로 카운트
나는 Linq에 엔티티 쿼리에이 SQL 문을 변환 할 필요가 ...
SELECT name, count(name) FROM people
GROUP by name
해결법
-
==============================
1.쿼리 구문
쿼리 구문
var query = from p in context.People group p by p.name into g select new { name = g.Key, count = g.Count() };
방법 구문
var query = context.People .GroupBy(p => p.name) .Select(g => new { name = g.Key, count = g.Count() });
-
==============================
2.그러나 항상 메시지 로그 / 콘솔에서 밖을 봐. 당신이 당신의 쿼리가 SQL로 변환 할 수 없습니다 및 C로 평가 될 것이라는 통지를 볼 경우, 당신은 그것을 다시 작성해야 할 수도 있습니다.
그러나 항상 메시지 로그 / 콘솔에서 밖을 봐. 당신이 당신의 쿼리가 SQL로 변환 할 수 없습니다 및 C로 평가 될 것이라는 통지를 볼 경우, 당신은 그것을 다시 작성해야 할 수도 있습니다.
(현재 엔티티 프레임 워크 코어 1.0 / 2.0로 변경) 엔티티 프레임 워크 (7)는 아직 (이되지 않더라도 최종 1.0 릴리스에서) 생성 된 SQL에서 GROUP BY로 번역 GROUPBY ()를 지원하지 않습니다. 모든 그룹화 논리는 많은 양의 데이터를로드 할 원인이 될 수있는 클라이언트 측에서 실행됩니다.
결국 이런 식으로 작성된 코드는 자동적으로 GROUP BY를 사용하여 시작되지만 메모리에 전체 해제 그룹화 된 데이터 집합을로드하면 성능 문제가 발생할 경우 지금 당신은 매우 신중해야합니다.
시나리오 이것은 당신이 손으로 SQL을 작성하고 EF를 통해 실행해야합니다 거래 - 차단기입니다.
당신은 아마 어쨌든 일을해야하는 - 그리고 SQL 프로파일 러까지 의심 화재의 경우 생성되는 것을 참조하십시오.
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2
-
==============================
3.편리한 확장 (예를 들어 루프에서) 신속한 검색을 위해 사전에 결과를 수집 할 수있다 :
편리한 확장 (예를 들어 루프에서) 신속한 검색을 위해 사전에 결과를 수집 할 수있다 :
var resultDict = _dbContext.Projects .Where(p => p.Status == ProjectStatus.Active) .GroupBy(f => f.Country) .Select(g => new { country = g.Key, count = g.Count() }) .ToDictionary(k => k.country, i => i.count);
원래는 여기 : http://www.snippetsource.net/Snippet/140/groupby-and-count-with-ef-in-c
-
==============================
4.여기서 코어 .NET 2.1 그룹화의 간단한 예는
여기서 코어 .NET 2.1 그룹화의 간단한 예는
var query = this.DbContext.Notifications. Where(n=> n.Sent == false). GroupBy(n => new { n.AppUserId }) .Select(g => new { AppUserId = g.Key, Count = g.Count() }); var query2 = from n in this.DbContext.Notifications where n.Sent == false group n by n.AppUserId into g select new { id = g.Key, Count = g.Count()};
어떤에 번역 :
SELECT [n].[AppUserId], COUNT(*) AS [Count] FROM [Notifications] AS [n] WHERE [n].[Sent] = 0 GROUP BY [n].[AppUserId]
-
==============================
5.EF 6.2 그것은 나를 위해 일한
EF 6.2 그것은 나를 위해 일한
var query = context.People .GroupBy(p => new {p.name}) .Select(g => new { name = g.Key.name, count = g.Count() });
from https://stackoverflow.com/questions/11564311/sql-to-entity-framework-count-group-by by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 오라클에서 정규 표현식에서 그룹을 추출하는? (0) | 2020.05.01 |
---|---|
[SQL] 나는 SQL에서 최대 (COUNT (*)를) 할 수 있습니까? (0) | 2020.05.01 |
[SQL] 포스트 그레스 jsonb에 배열의 구조를 쿼리에 대한 적절한 지수는 무엇입니까? (0) | 2020.05.01 |
[SQL] 어떻게 다른 컴퓨터에서 SQL 서버에 연결하는 방법? (0) | 2020.05.01 |
[SQL] 함수의 반환 SETOF 레코드 (가상 테이블) (0) | 2020.05.01 |