동적 변수의 색인을 기반으로 열 이름 읽기

.net c# dapper dynamic

문제

나는 그것에 주어진 입력 매개 변수를 기반으로 다른 열 이름과 열의 변수 번호를 반환하는 sproc 있습니다. (또한 행 수 => 1)

예를 들어, 입력이 3이면 sproc은 3 개의 열을 반환하고 입력이 5이면 5를 반환합니다. 입력 매개 변수가 확실하지 않은 경우)

C # 응용 프로그램에서 sproc을 통합하기 위해 dapper를 사용하고 있으며 아래와 같이 반환 형식으로 동적을 사용하고 있습니다.

dynamic returnValue = connection.Query<dynamic>("sproc and inputs")

누군가가 동적 변수에서 열을 읽는 방법에 대해 안내 할 수 있습니까?

returnValue[0].col1, returnValue[0].col2 하지만 쿼리 할 열의 수가 확실하지 않습니다.

거기에 returnValue[0]["c1"] 또는 모든 간단한 열을 입력 매개 변수를 기반으로 모든 열을 얻을 수 있도록 루프를 읽을 수있는 방법이 있나요?

수락 된 답변

connection.Query() 호출 결과는 결과를 반복하거나 인덱스 및 열 이름 키를 사용하여 액세스 할 수 있도록 IEnumerable<IDictionary<string, object>> 로 캐스팅 할 수 있습니다. 예 :

IEnumerable<IDictionary<string, object>> results;

string sql = @"select 'a' as col1, 'b' as col2, 'c' as col3, 'd' as col4
               union
               select 'w' as col1, 'x' as col2, 'y' as col3, 'z' as col4";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    results = connection.Query(sql) as IEnumerable<IDictionary<string, object>>;
}

//we need to use ElementAt as we have an Enumerable but we could ToList it if required
Console.WriteLine(results.ElementAt(0)["col1"]);

//we can iterate the rows
foreach (var row in results)
{
    //then iterate the columns and get a KeyValuePair for each column
    foreach (var col in row)
    {
        Console.WriteLine("{0} {1}", col.Key, col.Value);
    }
}

어떤 지문 :

에이
col1 a
col2 b
col3 c
col4 d
col1 w
col2 x
col3 y
col4 z



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow