>백엔드 개발 >C++ >LINQ는 어떻게 데이터를 효율적으로 그룹화하고 각 그룹 내에서 발생 횟수를 계산할 수 있습니까?

LINQ는 어떻게 데이터를 효율적으로 그룹화하고 각 그룹 내에서 발생 횟수를 계산할 수 있습니까?

DDD
DDD원래의
2025-01-22 00:41:08301검색

How Can LINQ Efficiently Group Data and Count Occurrences Within Each Group?

LINQ 데이터 집계 및 그룹화: 효율적인 방법에 대한 자세한 설명

LINQ(Language Integrated Query)는 다양한 시나리오에서 데이터를 쿼리하고 조작하는 강력하고 간결한 방법을 제공합니다. 일반적인 작업 중 하나는 특정 기준에 따라 데이터를 그룹화하고 각 그룹화에서 발생 횟수를 계산하는 것입니다.

LINQ를 사용하여 데이터 그룹화 및 계산

name, metric, day 및 other_metric과 같은 필드를 포함하는 UserInfo라는 데이터 세트가 있다고 가정합니다. 메트릭 값을 기준으로 정렬하고 메트릭 수를 가져오려면 다음 LINQ 구문을 사용할 수 있습니다.

<code class="language-csharp">var groupMetrics = 
    from info in data // 从数据源开始
    group info by info.metric into grp // 按'metric'字段分组
    select new { Key = grp.Key, Count = grp.Count() }; // 选择键和计数</code>

이 쿼리는 다음을 수행합니다.

  1. GroupBy 절은 메트릭 값을 기준으로 UserInfo 개체를 그룹화하여 일련의 그룹을 생성합니다.
  2. Select 절은 각 그룹을 익명 유형으로 투영합니다. 이 유형에는 Key(메트릭 값을 나타냄)와 Count(발생 횟수를 나타냄)라는 두 가지 속성이 있습니다.
  3. 마지막 OrderBy 절은 측정항목 값을 기준으로 결과를 오름차순으로 정렬합니다.

이 쿼리를 실행하면 측정항목 값과 해당 개수가 포함된 목록이 제공되므로 데이터세트 내 측정항목 분포에 대한 요약이 제공됩니다.

맞춤형 그룹 결과

위 솔루션은 익명 유형을 사용하여 그룹화된 결과를 구성합니다. 그러나 그룹화된 데이터를 나타내는 사용자 정의 클래스를 정의하여 출력 형식을 더 효과적으로 제어할 수도 있습니다.

기타 솔루션

LINQ to SQL을 사용하는 대안은 원래 질문에 언급되어 있습니다.

<code class="language-csharp">var pl = from r in info
         orderby r.metric    
         group r by r.metric into grp
         select new { key = grp.Key, cnt = grp.Count()};</code>

두 솔루션 모두 지표별로 그룹화하고 발생 횟수를 계산하는 목표를 달성하지만 LINQ to SQL 구문은 데이터베이스 쿼리를 위해 특별히 설계된 반면, 순수 LINQ 구문은 UserInfo 개체의 열거된 컬렉션에 적용될 수 있습니다. 선택하는 방법은 작업 중인 컨텍스트와 데이터 소스에 따라 다릅니다.

위 내용은 LINQ는 어떻게 데이터를 효율적으로 그룹화하고 각 그룹 내에서 발생 횟수를 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.