첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ IN 조건 문자열 구하기 예제

using System;
using System.Collections.Generic;

string condition = GetINConditionString("ID", new List<string> { "A", "B", "C", "D", "E", "F", "G" }, 5);
            
Console.WriteLine(condition);

 

728x90

 

▶ IN 조건 문자열 구하기

using System.Collections.Generic;
using System.Text;

#region IN 조건 문자열 구하기 - GetINConditionString(fieldName, valueList, itemGroupCount)

/// <summary>
/// IN 조건 문자열 구하기
/// </summary>
/// <param name="fieldName">필드명</param>
/// <param name="valueList">값 리스트</param>
/// <param name="itemGroupCount">항목 그룹 수</param>
/// <returns>IN 조건 문자열</returns>
public string GetINConditionString(string fieldName, List<string> valueList, int itemGroupCount = 1000)
{
    if(valueList == null || valueList.Count == 0)
    {
        return string.Empty;
    }

    int listCount      = valueList.Count;
    int listGroupCount = (int)Math.Ceiling((double)listCount / itemGroupCount);

    StringBuilder stringBuilder = new StringBuilder();

    stringBuilder.Append("AND (");

    for(int i = 0; i < listGroupCount; i++)
    {
        int startIndex = i * itemGroupCount;
        int endIndex   = (i + 1) * itemGroupCount - 1;

        if(endIndex > listCount - 1)
        {
            endIndex = listCount - 1;
        }

        if(i == 0)
        {
            AppendINConditionString(stringBuilder, fieldName, valueList, startIndex, endIndex);
        }
        else
        {
            stringBuilder.Append(" OR ");

            AppendINConditionString(stringBuilder, fieldName, valueList, startIndex, endIndex);
        }
    }

    stringBuilder.Append(")");

    return stringBuilder.ToString();
}

#endregion
#region IN 조건 문자열 추가하기 - AppendINConditionString(stringBuilder, fieldName, valueList, startIndex, endIndex)

/// <summary>
/// IN 조건 문자열 추가하기
/// </summary>
/// <param name="stringBuilder">문자열 빌더</param>
/// <param name="fieldName">필드명</param>
/// <param name="valueList">값 리스트</param>
/// <param name="startIndex">시작 인덱스</param>
/// <param name="endIndex">종료 인덱스</param>
private void AppendINConditionString(StringBuilder stringBuilder, string fieldName, List<string> valueList, int startIndex, int endIndex)
{
    stringBuilder.Append($"({fieldName} IN (");

    for(int i = startIndex; i <= endIndex; i++)
    {
        stringBuilder.Append($"'{valueList[i]}',");
    }

    stringBuilder.Remove(stringBuilder.Length - 1, 1);

    stringBuilder.Append("))");
}

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

댓글을 달아 주세요