linq 将dapper查询转换为列表的问题

92vpleto  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(185)

我所要做的就是将一个短小精悍的查询转换成一个字典列表,其中的键是列名,值是行值。但是,我没有从代码中得到我想要的东西。
我的进口:

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列表。

gudnpqoy

gudnpqoy1#

DapperRow本身已经是IDictionary<string,object>了,所以你可以马上把它当作字典来使用。调试器中的类型和描述只是一个转移注意力的工具。
注意QueryAsync根据定义返回dynamic的列表,所以QueryAsync将来可能不会返回字典类型,但我认为这不太可能发生。

相关问题