gpt4 book ai didi

c# - 只从列表 executereader 中获取单个值

转载 作者:行者123 更新时间:2023-11-30 20:04:08 25 4
gpt4 key购买 nike

我正在尝试从我的数据库中读取值。但为什么我只得到没有列名的值?这是我的 Controller 。返回 JSON 中的值

            SqlCommand cmd = con.CreateCommand();

cmd.CommandText = "SELECT DISTINCT State FROM MyDBtable";

con.Open();
List<string> StateList = new List<string>();
SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
StateList.Add(reader[0].ToString());
}

return Json(new
{
myTable = StateList
}, JsonRequestBehavior.AllowGet);

这是我的 JSON

{"myTable":["VA","CA"]}

在哪里,它应该给我

{"myTable":[{"State":"VA"},{"State":"CA"}]}

为什么不是读取和打印状态

最佳答案

字符串没有属性“状态”。改为创建匿名类型:

myTable = StateList.Select(s => new { State = s })

更新:多列最简单的解决方案 - 为此创建一个 DTO

public class MyItem // of course use more descriptive name
{
public string State { get; set; }
public string Capital { get; set; }
// etc
}

并从阅读器中填写:

List<MyItem> items = new List<MyItem>();

while (reader.Read())
{
MyItem item = new MyItem();
item.State = reader[0].ToString();
item.Capital = reader[1].ToString();
// etc
items.Add(item);
}

return Json(new { myTable = items }, JsonRequestBehavior.AllowGet);

另一个示例(使用 Dapper,您可以在 NuGet 上找到它)。添加 using Dapper; 到您的代码中。使用与上面相同的 DTO 类。

using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return Json(new {
myTable = connection.Query<MyItem>("SELECT * FROM MyDBtable").ToList()
}, JsonRequestBehavior.AllowGet);
}

关于c# - 只从列表 executereader 中获取单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com