¿Cómo puedo obtener mi resultado apuesto para ser una lista?

c# dapper

Pregunta

¿Por qué no puedo agregar un .ToList() en esto? Lo único que permite Intellisense es .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;
}
//..

ACTUALIZAR

Creo que el problema tiene que ver con conn.queryasync (conn es context.Database.Connection.ConnectionString) en lugar de context.Database.SqlQuery

Respuesta aceptada

Intenta cambiar a esto.

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

O

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

Creo que está presionando el objeto Task con sus intentos de llamar a .ToList()


Respuesta popular

Tratar:

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

o

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

Como dijo @Amy, debe usar conn.QueryAsync<ProfitMargin>(sqlQuery, new { QuoteId = QuoteIds.ToArray()})) que devuelve una Task<IEnumerable<ProfitMargin>> tanto al esperar la evaluación de un IEnumerable<ProfitMargin> .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué