如果我有一个SQL语句,
SELECT Count(id) as TotalRows, transaction_date
FROM Accounts
Group By transaction_date
我使用什么作为返回类型,使用Dapper Dot Net在我的视图中显示它?我尝试使用ViewData["mydata"]
并尝试使用List<dynamic>
,但我无法迭代,因为返回类型为IActionResult
,因此没有枚举器。我无法使用IEnumerable
将其转换为特定类型(我不知道如何),因为没有自定义类型(帐户,人员等)。这些都没有枚举属性。
除非有必要,否则我不想使用Linq。
答案 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>
}