如何从C#中的数据库中检索KeyValuePair的值?

我正在从事一个涉及keyvaluepair的项目。我将int作为键,将字符串作为Value。

我想要的是我想从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中看到字符串“值”,例如“欢迎光临,您好吗?”,“告诉我一些有关您自己的东西”等,则是静态的。所有这些值已经存在于我的本地数据库中。我只需要数据库中的这些字符串值。

我正在使用 MS SQL数据库

这可能吗?

bbsoft123 回答:如何从C#中的数据库中检索KeyValuePair的值?

您可以使用任何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,就像您编写的一样,您可以创建一个类来复制表结构并包含这些对象的集合。

您还可以更进一步,研究诸如Entity Framework之类的东西。

祝你好运!

,

您可以使用 EntityFramework ToDictionary函数执行此映射。

var test = await this.dbcontext.InterviewQuestions
    .Select(x => new { x.Id,x.Description})
    .AsEnumerable()
    .ToDictionaryAsync(xkvp  => xkvp.Id,xkvp.Description);
  1. 如果您使用的是.net core,则可以检查getting started with EF core
  2. 如果您使用的是.net,则可以检查getting started with EF 6

我的个人最爱之一code first with EF 6 from existing DB将生成您所需的大多数代码。

本文链接:https://www.f2er.com/2815087.html

大家都在问