New programmer having trouble assigning model property values from a stored procedure returning a dynamic list.
Error: cant implicitly convert
.
and if I try using something like Convert.ToDouble(Resultlist[0]);
that fails too.
The results list is returning expected values from the DB.
I am prrobably missing something very simple.
Model properties in this case are all doubles.
CODE:
public PricingOptionsModel GetPricing(PricingOptionsModel model)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString("Database")))
{
List<dynamic> Resultlist;
Resultlist = connection.Query("dbo.GetCharges", commandType: CommandType.StoredProcedure).ToList();
model.item1 = Resultlist[0];
model.item2 = Resultlist[1];
model.item3 = Resultlist[2];
model.item4 = Resultlist[3];
model.item5 = Resultlist[4];
model.item6 = Resultlist[5];
model.item7 = Resultlist[6];
model.item8 = Resultlist[7];
}
return model;
}
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Cannot implicitly convert type 'object' to 'double'. An explicit conversion exists (are you missing a cast?)'
In case of your stored procedure, it provides a single row with multiple columns. ResultList
has 1 item of type object
and it has multiple properties (item1
, item2
, ...).
So you want to assign it like this: model.item1 = ResultList[0].item1;
.
If types returned from Dapper don't match, then you can also apply Convert
there like this:
model.Item1 = Convert.ToDouble(ResultList[0].item1;
.