如何在 C# 中从数据库中检索 KeyValuePair 的值?
How to retrieve the Value of KeyValuePair from database in C#?
我正在做一个涉及 KeyValuePair 的项目。我有 int 作为键,string 作为值。
我想要的是我想从 KeyValuePair 中获取值。
我有这个代码:
var list = new List<KeyValuePair<int, string>>()
{
new KeyValuePair<int, string>(obj,_Obj.Questions)
};
Dictionary<int, string> d = new Dictionary<int, string>
{
{ 1, "Welcome, How are you?" },
{ 2, "Tell me something about yourself."},
{ 3, "How much experience do you have?"},
};
因此,如果您在 KVP 中看到字符串值,如 "Welcome, How are you?"、"Tell me something about yourself" 等是静态值。所有这些值都已存在于我的本地数据库中。我只想从数据库中获取这些字符串值。
我正在使用 MS SQL 数据库
这可能吗??
是的,你问的是可能的。
您必须建立数据库连接和 运行 查询以提取所需的数据。收到数据后,将其放入集合中。
这个集合可以像你写的那样包含 KeyValuePairs 或者 你可以创建一个 class 来复制 table 结构并拥有这些对象的集合.
您还可以更进一步,研究诸如 Entity Framework.
之类的内容
祝你好运!
您可以使用 EntityFramework ToDictionary
函数来完成此映射。
var test = await this.dbcontext.InterviewQuestions
.Select(x => new { x.Id, x.Description})
.AsEnumerable()
.ToDictionaryAsync(xkvp => xkvp.Id, xkvp.Description);
- 如果您使用的是.net core
,您可以检查getting started with EF core
- 如果您使用的是.net
,您可以检查getting started with EF 6
我个人最喜欢的一个 code first with EF 6 from existing DB 将生成您需要的大部分代码。
您可以使用任何 ORM,例如 Entity Framework,但是,我将提供一个示例来手动执行此操作:
var list = new List<KeyValuePair<int, string>>()
using(var connection = new SqlConnection(connectionString))
using(var command = new SqlCommand("SELECT * FROM interview_Table", connection))
using(var reader = command.ExecuteReader())
{
if (connection.State != ConnectionState.Open) { connection.Open(); }
if (reader.HasRows)
{
foreach (var row in reader)
{
//ensurance
var isValidId = int.TryParse(row["Id"]?.ToString(), int out id);
var description = row["Description"]?.ToString();
// only fetch rows with a valid id number with description that is not empty or null
if(isValidId && !string.IsNullOrEmpty(description))
{
list.Add(new KeyValuePair<int, string>(id, description));
}
}
}
}
我正在做一个涉及 KeyValuePair 的项目。我有 int 作为键,string 作为值。
我想要的是我想从 KeyValuePair 中获取值。
我有这个代码:
var list = new List<KeyValuePair<int, string>>()
{
new KeyValuePair<int, string>(obj,_Obj.Questions)
};
Dictionary<int, string> d = new Dictionary<int, string>
{
{ 1, "Welcome, How are you?" },
{ 2, "Tell me something about yourself."},
{ 3, "How much experience do you have?"},
};
因此,如果您在 KVP 中看到字符串值,如 "Welcome, How are you?"、"Tell me something about yourself" 等是静态值。所有这些值都已存在于我的本地数据库中。我只想从数据库中获取这些字符串值。
我正在使用 MS SQL 数据库
这可能吗??
是的,你问的是可能的。
您必须建立数据库连接和 运行 查询以提取所需的数据。收到数据后,将其放入集合中。
这个集合可以像你写的那样包含 KeyValuePairs 或者 你可以创建一个 class 来复制 table 结构并拥有这些对象的集合.
您还可以更进一步,研究诸如 Entity Framework.
之类的内容祝你好运!
您可以使用 EntityFramework ToDictionary
函数来完成此映射。
var test = await this.dbcontext.InterviewQuestions
.Select(x => new { x.Id, x.Description})
.AsEnumerable()
.ToDictionaryAsync(xkvp => xkvp.Id, xkvp.Description);
- 如果您使用的是.net core ,您可以检查getting started with EF core
- 如果您使用的是.net ,您可以检查getting started with EF 6
我个人最喜欢的一个 code first with EF 6 from existing DB 将生成您需要的大部分代码。
您可以使用任何 ORM,例如 Entity Framework,但是,我将提供一个示例来手动执行此操作:
var list = new List<KeyValuePair<int, string>>()
using(var connection = new SqlConnection(connectionString))
using(var command = new SqlCommand("SELECT * FROM interview_Table", connection))
using(var reader = command.ExecuteReader())
{
if (connection.State != ConnectionState.Open) { connection.Open(); }
if (reader.HasRows)
{
foreach (var row in reader)
{
//ensurance
var isValidId = int.TryParse(row["Id"]?.ToString(), int out id);
var description = row["Description"]?.ToString();
// only fetch rows with a valid id number with description that is not empty or null
if(isValidId && !string.IsNullOrEmpty(description))
{
list.Add(new KeyValuePair<int, string>(id, description));
}
}
}
}