我所要做的就是将一个短小精悍的查询转换成一个字典列表,其中的键是列名,值是行值。但是,我没有从代码中得到我想要的东西。
我的进口:
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Web.Mvc;
using System.Linq;
using Dapper;
查询代码:
using (var dbContext = await SqlServerRepository.OpenConnection())
{
string sql = @"SELECT DISTINCT YEAR(DateSearch) YearValue
FROM KeySearch
ORDER BY YearValue;";
var result = (await dbContext.QueryAsync(sql)).ToList();
ViewBag.Years = new SelectList(result, "YearValue", "YearValue");
}
我得到一个dapperrow
对象的列表,而不是字典。
我尝试使用QueryAsync<Dictionary<string,object>>(sql)
设置类型,但这返回一个空字典列表。
我还尝试了result.Select(row => (IDictionary<string, object>)row).ToList()
,但它返回了相同的dapperrows列表。
1条答案
按热度按时间gudnpqoy1#
DapperRow本身已经是IDictionary<string,object>了,所以你可以马上把它当作字典来使用。调试器中的类型和描述只是一个转移注意力的工具。
注意
QueryAsync
根据定义返回dynamic
的列表,所以QueryAsync
将来可能不会返回字典类型,但我认为这不太可能发生。