KeiStory

반응형

List<dynamic> 에 데이터 추가하기

 

Dapper 를 이용해 쿼리 결과데이터를 List<dynamic> 로 받아서 화면에 데이터를 표시하고 있는데

특정한 데이터를 추가하는 방법을 알아봅니다.

쿼리 결과를 받았기 때문에 dynamic 이지만 구조가 잡혀있습니다.

여기에 데이터를 추가하기 위해서는 구조에 맞게 데이터를 넣고 추가해줘야합니다.

 

아래 Method 를 추가합니다.

using System.Dynamic;

public void AddRowWithSingleValue(List<dynamic> rows, string columnName, object value)
{
    if (rows == null || rows.Count == 0)
        throw new ArgumentException("rows 리스트가 비어있습니다.");

    // 첫 번째 row에서 컬럼 구조 추출
    var firstRow = (IDictionary<string, object>)rows[0];
    dynamic newRow = new ExpandoObject();
    var newRowDict = (IDictionary<string, object>)newRow;

    foreach (var col in firstRow.Keys)
    {
        if (col == columnName)
            newRowDict[col] = value;
        else
            newRowDict[col] = null;
    }

    rows.Add(newRow);
}

 

  • 쿼리 결과의 첫 번째 행에서 컬럼 구조를 추출합니다.
  • ExpandoObject를 이용해 동일한 구조의 새 row를 생성합니다.
  • 원하는 컬럼에만 값을 넣고 나머지는 null 처리합니다.
  • List<dynamic>에 추가합니다.

 

 

사용은 아래와 같이 사용합니다.

var result = connection.Query("SELECT Id, Name, Age FROM Users").ToList();

AddRowWithSingleValue(result, "Name", "홍길동");

// 출력 확인
foreach (var row in result)
{
    Console.WriteLine($"Id: {row.Id}, Name: {row.Name}, Age: {row.Age}");
}

만약 기존에 3개의 행이 있었다면, 위 코드를 통해 "Name" = "홍길동" 값을 갖는 1개의 새 행이 추가되어 총 4개의 행이 됩니다.

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band