첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
#region 축소하기 - Shrink<TElement>(sourceEnumerable, fisrtSkipCount, lastSkipCount)

/// <summary>
/// 축소하기
/// </summary>
/// <typeparam name="TElement">요소 타입</typeparam>
/// <param name="sourceEnumerable">소스 열거 가능형</param>
/// <param name="fisrtSkipCount">첫번째 제외 항목 수</param>
/// <param name="lastSkipCount">마지막 제외 항목 수</param>
/// <returns>축소 열거 가능형</returns>
public IEnumerable<TElement> Shrink<TElement>(IEnumerable<TElement> sourceEnumerable, int fisrtSkipCount, int lastSkipCount)
{
    int i = 0;

    Queue<TElement> queue = new Queue<TElement>(lastSkipCount + 1);

    foreach(TElement source in sourceEnumerable)
    {
        if(i >= fisrtSkipCount)
        {
            queue.Enqueue(source);

            if(queue.Count > lastSkipCount)
            {
                yield return queue.Dequeue();
            }
        }
        else
        {
            i++;
        }
    }
}

#endregion
#region 첫번째 값을 제외한 열거 가능형 구하기 - SkipLast<TElement>(sourceEnumerable, firstSkipCount)

/// <summary>
/// 마지막 값을 제외한 열거 가능형 구하기
/// </summary>
/// <typeparam name="TElement">요소 타입</typeparam>
/// <param name="sourceEnumerable">소스 열거 가능형</param>
/// <param name="firstSkipCount">첫번째 제외 항목 수</param>
/// <returns>첫번째 값을 제외한 열거 가능형</returns>
public IEnumerable<TElement> SkipFirst<TElement>(IEnumerable<TElement> sourceEnumerable, int firstSkipCount = 1)
{
    return Shrink(sourceEnumerable, firstSkipCount, 0);
}

#endregion
#region 마지막 값을 제외한 열거 가능형 구하기 - SkipLast<TElement>(sourceEnumerable, lastSkipCount)

/// <summary>
/// 마지막 값을 제외한 열거 가능형 구하기
/// </summary>
/// <typeparam name="TElement">요소 타입</typeparam>
/// <param name="sourceEnumerable">소스 열거 가능형</param>
/// <param name="lastSkipCount">마지막 제외 항목 수</param>
/// <returns>마지막 값을 제외한 열거 가능형</returns>
public IEnumerable<TElement> SkipLast<TElement>(IEnumerable<TElement> sourceEnumerable, int lastSkipCount = 1)
{
    return Shrink(sourceEnumerable, 0, lastSkipCount);
}

#endregion
728x90
반응형
그리드형(광고전용)

'C# > Common' 카테고리의 다른 글

[C#/COMMON] Type 클래스 : 자식 타입 여부 구하기  (0) 2022.06.20
[C#/COMMON] 첫번째 문자가 대문자 문자열 구하기  (0) 2022.06.20
[C#/COMMON] 첫번째 문자가 대문자 문자열 구하기  (0) 2022.06.20
[C#/COMMON] TextInfo 클래스 : ToTitleCase 메소드를 사용해 단어 첫번째 문자가 대문자 문자열 구하기  (0) 2022.06.20
[C#/COMMON] CallerMemberNameAttribute 클래스 : 메소드 호출자의 메소드 또는 속성명 구하기  (0) 2022.06.20
[C#/COMMON] Queue<T> 클래스 : Enqueue/Dequeue 메소드를 사용해 첫번째/마지막 값을 제외한 열거 가능형 구하기  (0) 2022.06.20
[C#/COMMON] IEnumerator<T> 인터페이스 : Current 속성/MoveNext 메소드를 사용해 마지막 값을 제외한 열거 가능형 구하기  (0) 2022.06.20
[C#/COMMON] IEnumerator<T> 인터페이스 : Current 속성/MoveNext 메소드를 사용해 마지막 값을 제외한 열거 가능형 구하기  (0) 2022.06.20
[C#/COMMON] Environment 클래스 : GetEnvironmentVariable 정적 메소드를 사용해 Program Files (x86) 디렉토리 경로 구하기  (0) 2022.06.20
[C#/COMMON] Environment 클래스 : GetEnvironmentVariable/GetFolderPath 정적 메소드를 사용해 Program Files (x86) 디렉토리 경로 구하기  (0) 2022.06.20
[C#/COMMON] Environment 클래스 : GetEnvironmentVariable 정적 메소드를 사용해 Program Files (x86) 디렉토리 경로 구하기  (0) 2022.06.20
Posted by icodebroker

댓글을 달아 주세요