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
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] List<T> 클래스 : ForEach 메소드 사용하기 (0) | 2020.07.22 |
---|---|
[C#/COMMON] 각도 정규화하기 (0) | 2020.07.18 |
[C#/COMMON] Math 클래스 : IEEE 754 실수 계산하기 (0) | 2020.07.17 |
[C#/COMMON] Math 클래스 : 실수 올림/반올림/내림하기 (0) | 2020.07.17 |
[C#/COMMON] ProcessStartInfo 클래스 : Verb 속성을 사용해 그림판에서 이미지 편집하기 (0) | 2020.07.07 |
[C#/COMMON] Buffer 클래스 : BlockCopy 메소드를 사용해 배열 복사하기 (0) | 2020.06.09 |
[C#/COMMON] FileInfo 클래스 : 특정 디렉토리 경로에서 파일 크기가 0보다 큰 파일 정보 리스트 구하기 (0) | 2020.06.08 |
[C#/COMMON] Ping 클래스 : 네트워크 연결 여부 구하기 (0) | 2020.06.04 |
[C#/COMMON] Process 클래스 : Start 정적 메소드를 사용해 파일 탐색기 실행하기 (0) | 2020.06.04 |
[C#/COMMON] IMMDevice 인터페이스 : 볼륨 설정하기/구하기 (0) | 2020.06.04 |
댓글을 달아 주세요