bdfgdfg

Linq - Group by 본문

게임프로그래밍/C#

Linq - Group by

marmelo12 2022. 11. 5. 20:52
반응형

Linq는 마치 SQL문법처럼 사용가능한 문법. 코드를 여러 단계에 걸쳐서 작성해야할 것을 한줄로 표현가능한 등 굉장히 편리한 이점이 있다.

 

최근에 List 컬렉션의 요소에 중복된 요소가 있고. 해당 각 중복된 요소의 수를 구해 중복된 수가 높은 요소를 N개만큼 뽑아와야 하는일이 존재했다. 물론 좀 더 처리해야 할 로직은 존재했지만 중요한건 이것이었음.

 

여기서 Groupby 문법(간단하게 그룹화,중복제거라고 보면된다)을 쓰면 깔끔하게 처리가 가능.

 

class Program
{
    static void Main(string[] args)
    {
        var lstOverlappedElementInList = new List<Int32>() { 1, 1, 3, 3, 3, 5, 9, 9, 15, 15, 15, 15, 4, 4, 50, 50, 50, 50 };

        var ieGroupBy = lstOverlappedElementInList.GroupBy(r => r);

        var lstResult = ieGroupBy.Select(r => new { ElementID = r.Key, ElementCount = r.Count() }).OrderByDescending( r => r.ElementCount ).Select( r => r.ElementID ).ToList();

        lstResult.ForEach(r => Console.Write($"{r} "));

    }
}

결과

 

반응형

'게임프로그래밍 > C#' 카테고리의 다른 글

Interlocked  (0) 2022.12.13
[C#] 예외처리(try-catch)  (0) 2022.04.22
[C#] 일반화(제네릭) 프로그래밍  (0) 2022.04.21
[C#] 인덱서(Indexer)  (0) 2022.04.21
[C#] 프로퍼티(갓)  (0) 2022.04.19
Comments