我如何通过查询在 C# 中创建一个 "dynamic" 列表,其属性命名为 SQL 服务器 table 的列
How can I create a "dynamic" list in C# from query with properties named like columns of a SQL Server table
我想试试这个:每次执行查询时,我想自动创建一个对象列表,对象的每个 属性 必须与 [= 的列名相同32=].
像这样:
my_Sql_table
:
code
number
brand
001
43
qwe
002
721
plo
我的 C# 控制器:
SqlConnection sqlConn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConn;
cmd.CommandText = "select * from my_Sql_table";
cmd.CommandType = CommandType.Text;
sqlConn.ConnectionString = _configuration["dbConnectionString"];
using (sqlConn)
{
sqlConn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
// the code here
}
}
在 C# 中,我的结果是这样的:
myList:
[0] code: "001", number: "43", brand: "qwe"
[1] ....
现在假设有很多查询要处理大量列,我的目标不是创建那么多模型,而是在使用 javascript.
时更轻松地读取属性
您可能想根据您的输出格式更改它,但这是关于如何获得结果的想法。我将 Dictionary 与 ExpandoObject 一起使用来覆盖变量分配的限制。也尝试实现 DataTable 而不是直接从 SqlDataReader 读取,因为这往往会导致问题。
using System.Dynamic;
private IEnumerable<ExpandoObject> GetQueryToList()
{
SqlConnection sqlConn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConn;
cmd.CommandText = "select * from my_Sql_table";
cmd.CommandType = CommandType.Text;
sqlConn.ConnectionString = _configuration["dbConnectionString"];
using (sqlConn)
{
var list = new List<ExpandoObject>();
sqlConn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
var expandoObject = new ExpandoObject();
for (var i = 0; i<reader.FieldCount; i++)
{
((IDictionary<string, object>) expandoObject).Add(
reader.GetName(i), reader[i]);
}
list.Add(expandoObject);
}
}
我想试试这个:每次执行查询时,我想自动创建一个对象列表,对象的每个 属性 必须与 [= 的列名相同32=].
像这样:
my_Sql_table
:
code | number | brand |
---|---|---|
001 | 43 | qwe |
002 | 721 | plo |
我的 C# 控制器:
SqlConnection sqlConn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConn;
cmd.CommandText = "select * from my_Sql_table";
cmd.CommandType = CommandType.Text;
sqlConn.ConnectionString = _configuration["dbConnectionString"];
using (sqlConn)
{
sqlConn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
// the code here
}
}
在 C# 中,我的结果是这样的:
myList:
[0] code: "001", number: "43", brand: "qwe"
[1] ....
现在假设有很多查询要处理大量列,我的目标不是创建那么多模型,而是在使用 javascript.
时更轻松地读取属性您可能想根据您的输出格式更改它,但这是关于如何获得结果的想法。我将 Dictionary 与 ExpandoObject 一起使用来覆盖变量分配的限制。也尝试实现 DataTable 而不是直接从 SqlDataReader 读取,因为这往往会导致问题。
using System.Dynamic;
private IEnumerable<ExpandoObject> GetQueryToList()
{
SqlConnection sqlConn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConn;
cmd.CommandText = "select * from my_Sql_table";
cmd.CommandType = CommandType.Text;
sqlConn.ConnectionString = _configuration["dbConnectionString"];
using (sqlConn)
{
var list = new List<ExpandoObject>();
sqlConn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
var expandoObject = new ExpandoObject();
for (var i = 0; i<reader.FieldCount; i++)
{
((IDictionary<string, object>) expandoObject).Add(
reader.GetName(i), reader[i]);
}
list.Add(expandoObject);
}
}