在不使用模型的情况下循环 Dapper.Net 个查询结果
Looping through Dapper.Net query results without the use of models
我对 C# 还是个新手,我正在努力寻找解决问题的方法。我的 SQL dapper query returns a table (根据我的理解,如果它是 IEnumerable 与我过去使用的 ADO 和记录集不同,它并不是真正的 table ) 具有三列 col1、col2 和 col3,并且具有多行。我需要为每一行遍历此查询结果并测试值(即,我检查每行的行(0).field1 = 5,行(1).field1 = 5 等的foreach循环)做我需要做。这看起来很基础,但我看到的所有精巧的教程都没有展示这方面的例子,如果他们这样做,他们似乎利用 class 对象而不是直接访问结果(如果可能的话,或者你必须映射结果到模型?)我的代码如下:
String query = "exec dbo.storeProcedure @jsonData, @mainDocJSON, @supportingDocsJSON";
IEnumerable queryResult;
using (var connection = new SqlConnection(connectionString))
{
queryResult = connection.Query(query, new { jsonData = jsonData, mainDocJSON = mainDocJSON, supportingDocsJSON = supportingDocsJSON });
}
我最终还从该代码所在的控制器返回了 IEnumerable 结果,因此我在 JSON 中使用以下方法将其发回给用户。
return Ok(queryResult);
connection.Query
return 一个 IEnumerable,为什么我们不创建一个 class 来映射集合? Dapper 是一个微型 ORM,但仍然... ORM。
例如:您的 table return 3 列 ID、名称、创建日期。
// declare a class to map the result first
public class ResultHolderDto
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
}
// query somewhere
// This will return IEnumerable<ResultHolderDto>, feel free to play around as normal
var queryResult = await connection.QueryAsync<ResultHolderDto>(query, new { jsonData = jsonData, mainDocJSON = mainDocJSON, supportingDocsJSON = supportingDocsJSON });
foreach(var item in queryResult)
{
var col1Value = queryResult.Id;
var col2Value = queryResult.Name;
var col3Value = queryResult.CreatedDate;
// Then do something with col1Value, col2Value, col3Value...
}
我对 C# 还是个新手,我正在努力寻找解决问题的方法。我的 SQL dapper query returns a table (根据我的理解,如果它是 IEnumerable 与我过去使用的 ADO 和记录集不同,它并不是真正的 table ) 具有三列 col1、col2 和 col3,并且具有多行。我需要为每一行遍历此查询结果并测试值(即,我检查每行的行(0).field1 = 5,行(1).field1 = 5 等的foreach循环)做我需要做。这看起来很基础,但我看到的所有精巧的教程都没有展示这方面的例子,如果他们这样做,他们似乎利用 class 对象而不是直接访问结果(如果可能的话,或者你必须映射结果到模型?)我的代码如下:
String query = "exec dbo.storeProcedure @jsonData, @mainDocJSON, @supportingDocsJSON";
IEnumerable queryResult;
using (var connection = new SqlConnection(connectionString))
{
queryResult = connection.Query(query, new { jsonData = jsonData, mainDocJSON = mainDocJSON, supportingDocsJSON = supportingDocsJSON });
}
我最终还从该代码所在的控制器返回了 IEnumerable 结果,因此我在 JSON 中使用以下方法将其发回给用户。
return Ok(queryResult);
connection.Query
return 一个 IEnumerable,为什么我们不创建一个 class 来映射集合? Dapper 是一个微型 ORM,但仍然... ORM。
例如:您的 table return 3 列 ID、名称、创建日期。
// declare a class to map the result first
public class ResultHolderDto
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
}
// query somewhere
// This will return IEnumerable<ResultHolderDto>, feel free to play around as normal
var queryResult = await connection.QueryAsync<ResultHolderDto>(query, new { jsonData = jsonData, mainDocJSON = mainDocJSON, supportingDocsJSON = supportingDocsJSON });
foreach(var item in queryResult)
{
var col1Value = queryResult.Id;
var col2Value = queryResult.Name;
var col3Value = queryResult.CreatedDate;
// Then do something with col1Value, col2Value, col3Value...
}