Dapper를 사용할 때, 쿼리 결과를 List<dynamic> 형태로 받아서 처리하는 경우가 많습니다.
그런데 UI 표시나 데이터 출력 시 각 행에 순번(예: Index, No, RowNum)을 추가하고 싶은 경우가 있습니다
이번 포스팅에서는 List<dynamic>에 순번 필드를 앞에 추가하는 방법을 소개합니다.
using System.Dynamic;
// Dapper 결과
List<dynamic> result = connection.Query("SELECT Name, Age FROM Users").ToList();
// 순번 Index 필드 추가 및 순번 설정
var indexedResult = result
.Select((item, index) =>
{
var newObj = new ExpandoObject() as IDictionary<string, object>;
// 1. 먼저 Index 추가
newObj["Index"] = index + 1;
// 2. 기존 필드 순서대로 복사
foreach (var kv in (IDictionary<string, object>)item)
{
newObj[kv.Key] = kv.Value;
}
return (dynamic)newObj;
})
.ToList();
위 처럼 코딩하게 되면 첫번째 필드에 Index 순번 필드가 추가됩니다.
ExpandoObject는 속성을 런타임에 동적으로 구성할 수 있고 IDictionary<string, object>로 캐스팅하면 Key-Value 형태로 조작 가능합니다. 이를 C#의 Select((item, index) => ...)를 활용하면 인덱스를 쉽게 부여할 수 있습니다.
SemanticKernel 에 Ollama 연동하기 (0) | 2025.06.17 |
---|---|
초간단 SemanticKernel 에 OpenAI 연동하기 (0) | 2025.06.12 |
C# 으로 초간단 MCP Server 만들기 (Nall.ModelContextProtocol.Template) (0) | 2025.05.18 |
IEnumerable<dynamic> 에서 특정 컬럼 값을 콤마로 연결해 반환하기 (0) | 2025.04.23 |
List<dynamic> 에 데이터 추가하기 (0) | 2025.04.17 |