Как получить значение KeyValuePair из базы данных в C#? - PullRequest
1 голос
/ 06 января 2020

Я работаю над проектом с участием KeyValuePair. У меня есть int в качестве ключа и строка в качестве значения.

Я хочу получить значение от 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, например «Добро пожаловать, как дела?», «Расскажите мне что-нибудь о себе», et c - это состояние c. Все эти значения уже присутствуют в моей локальной базе данных. Я хочу эти строковые значения только из базы данных.

Я использую MS SQL База данных

Возможно ли это?

Ответы [ 3 ]

1 голос
/ 06 января 2020

Вы можете использовать любой 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));
            }                   
        }
    }
}
0 голосов
/ 06 января 2020

Вы можете использовать EntityFramework ToDictionary, чтобы сделать это отображение.

var test = await this.dbcontext.InterviewQuestions
    .Select(x => new { x.Id, x.Description})
    .AsEnumerable()
    .ToDictionaryAsync(xkvp  => xkvp.Id, xkvp.Description);
  1. Вы можете проверить начало работы с ядром EF , если вы net core
  2. Вы можете проверить начало работы с EF 6 , если вы используете. net

Один из моих личных избранных * Сначала код 1017 * с EF 6 из существующей БД сгенерирует большую часть необходимого вам кода.

0 голосов
/ 06 января 2020

Да, то, что вы спрашиваете, возможно.

Вам нужно будет установить sh соединение с базой данных и выполнить запрос, чтобы получить необходимые данные. Как только данные получены, возьмите их и поместите в коллекцию.

Эта коллекция может содержать KeyValuePairs, как вы написали или , вы можете создать класс, который будет реплицировать структуру таблицы и иметь коллекцию из этих объектов.

Вы также можете go сделать шаг вперед и взглянуть на что-нибудь, например Entity Framework.

Удачи!

...