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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-22 00:46:10647검색

How Can LINQ Group Data and Count Occurrences Efficiently?

LINQ를 활용하여 데이터를 효율적으로 그룹화하고 계산합니다

C#의 LINQ(언어 통합 쿼리)는 데이터를 조작하고 쿼리하는 강력한 방법을 제공합니다. 데이터 세트를 그룹화하고 계산해야 하는 상황에서 LINQ는 간결하고 효율적인 솔루션을 제공합니다.

사용자와 관련 측정항목, 날짜가 포함된 데이터세트가 있다고 가정해 보겠습니다.

<code>UserInfo(姓名, 指标, 日期, 其他指标)

数据:
joe  1 2011/01/01 5
jane 0 2011/01/02 9
john 2 2011/01/03 0
jim  3 2011/01/04 1
jean 1 2011/01/05 3
jill 2 2011/01/06 5
jeb  0 2011/01/07 3
jenn 0 2011/01/08 7</code>

우리의 목표는 지표 순서(0, 1, 2, 3...)로 그룹화된 테이블을 가져와 각 지표의 총 발생 횟수를 표시하는 것입니다.

LINQ를 사용한 그룹화 및 계산

LINQ를 사용하여 이를 달성하려면 'GroupBy' 및 'Select' 메서드를 사용할 수 있습니다.

<code>foreach(var line in data.GroupBy(info => info.metric)
                        .Select(group => new { 
                             Metric = group.Key, 
                             Count = group.Count() 
                        })
                        .OrderBy(x => x.Metric))
{
     Console.WriteLine("{0} {1}", line.Metric, line.Count);
}</code>

지침:

  1. 'GroupBy' 방법이 데이터세트에 적용되어 'metric' 속성에 따라 그룹화됩니다. 이렇게 하면 일련의 그룹이 생성되며, 각 그룹에는 동일한 '메트릭' 값을 가진 요소가 포함됩니다.
  2. 'Select' 메서드는 'Metric'(그룹의 키)과 'Count'(그룹의 요소 수)라는 두 가지 속성을 가진 새로운 익명 개체에 각 그룹을 투영하는 데 사용됩니다.
  3. 'OrderBy' 방법은 익명 개체를 '메트릭'을 기준으로 오름차순으로 정렬합니다.
  4. 결과는 일련의 익명 개체이며, 각 개체는 측정항목과 해당 개수를 나타냅니다.

출력:

<code>0 3
1 2
2 2
3 1</code>

다른 방법

제공된 LINQ 솔루션은 효율적이지만 더 단순화할 수 있습니다.

<code>var result = data.GroupBy(info => info.metric)
                 .Select(group => new { 
                      Metric = group.Key, 
                      Count = group.Count() 
                 })
                 .OrderBy(x => x.Metric);</code>

여기서 유일한 차이점은 'foreach' 루프를 사용하여 결과를 반복하는 대신 'result'라는 변수에 할당한다는 것입니다.

핵심사항

  • GroupBy()는 일련의 그룹을 생성합니다.
  • Select() 그룹을 익명 개체에 투영합니다.
  • Count()는 그룹의 요소 수를 반환합니다.
  • OrderBy()는 지정된 속성을 기준으로 결과를 정렬합니다.

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

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