내 결과를 어떻게 목록으로 만들 수 있습니까?

c# dapper

문제

왜 내가 .ToList() 를 추가 할 수 없습니까? Intellisense가 허용하는 유일한 것은 .ToString() 입니다.

//..
string sqlQuery = "SELECT sum(SellingPrice) as SellingPrice, sum(MarkupPercent) as MarkupPercent, sum(MarkupAmount) as MarkupAmount FROM ProfitMargins WHERE QuoteId in @QuoteId group by multiplier";
{
    List<ProfitMargin> profitMargin = (List<ProfitMargin>)await conn.QueryAsync<List<ProfitMargin>>(sqlQuery, new { QuoteId = QuoteIds.ToArray()})  //would like to add .ToList() here;

    return profitMargin;
}
//..

최신 정보

문제는 conn.queryasync (conn은 context.Database.Connection.ConnectionString)와 관련이 있다고 생각합니다. context.Database.SqlQuery

수락 된 답변

이것으로 변경해보십시오.

List<ProfitMargin> profitMargin = (await conn.QueryAsync<List<ProfitMargin>>(sqlQuery, new { QuoteId = QuoteIds.ToArray()})).ToList();

또는

var results = await conn.QueryAsync<List<ProfitMargin>>(sqlQuery, new { QuoteId = QuoteIds.ToArray()});
List<ProfitMargin> profitMargin = results.ToList();

난 당신이 전화 시도에 Task 개체를 때리는 것 같아 .ToList()


인기 답변

시험:

List<ProfitMargin> profitMargin = new List<ProfitMargin>(await conn.QueryAsync<ProfitMargin>(sqlQuery, new { QuoteId = QuoteIds.ToArray()}));

또는

List<ProfitMargin> profitMargin = (await conn.QueryAsync<ProfitMargin>(sqlQuery, new { QuoteId = QuoteIds.ToArray()})).ToList();

@Amy가 말했듯이, IEnumerable<ProfitMargin> 평가되기 때문에 Task<IEnumerable<ProfitMargin>> 을 반환하는 conn.QueryAsync<ProfitMargin>(sqlQuery, new { QuoteId = QuoteIds.ToArray()})) .



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