如何使用Dapper使用和查看SQL Group By和SQL Aggregates中的数据?

时间:2017-02-07 19:40:00

标签: c# dapper

如果我有一个SQL语句,

SELECT Count(id) as TotalRows, transaction_date
FROM Accounts
Group By transaction_date

我使用什么作为返回类型,使用Dapper Dot Net在我的视图中显示它?我尝试使用ViewData["mydata"]并尝试使用List<dynamic>,但我无法迭代,因为返回类型为IActionResult,因此没有枚举器。我无法使用IEnumerable将其转换为特定类型(我不知道如何),因为没有自定义类型(帐户,人员等)。这些都没有枚举属性。

除非有必要,否则我不想使用Linq。

1 个答案:

答案 0 :(得分:1)

创建一个POCO来表示您的结果集项目

public class GroupedData
{
   public int TotalRows { set;get;}
   public DateTime TransactionDate { set;get;}
}

使用Dapper,执行查询并将结果加载到此类的列表并将其传递给您的视图

public IActionResult Index()
{
   var groupedDataList = GetData();
   return View(groupedDataList);
}
private List<GroupedData> GetData()
{
   var q=@"SELECT Count(id) as TotalRows, 
               transaction_date as TransactionDate
          FROM Accounts
          Group By transaction_date";
   return yourSqlConnection.Query<GroupedData>(q).ToList();
}

现在确保您的视图强类型与您从操作方法传递的类型(GroupedData列表)相同。您可以枚举此列表。

@model List<GroupedData>
@foreach(var item in Model)
{
  <p>@item.TransactionDate</p>
  <p>@item.TotalRows</p>
}