2015-12-14 4 views
0

Я следующее перечислениеПрисвоение значения переменного перечислимой

public enum Outcome 
{ 
    DontKnow = 0, 
    Good = 1, 
    Bad = 2, 
    NotBad = 3 
} 

В моем классе результатов, у меня есть свойство с таким перечислением:

public class Result 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public Outcome FinalOutcome { get; set; } 
} 

Как я читать данные из базы данных - с помощью SqlDataReader - как я могу присвоить его значение?

while(reader.Read()) 
{ 
    Id = Convert.IsDbNull(reader[0]) ? Convert.ToInt32(0) : Convert.ToInt32(reader[0]); 
    Name = Convert.IsDbNull(reader[1]) ? string.Empty : reader[1].ToString(); 
    FinalOutcome = Convert.IsDbNull(reader[2]) ? WhatGoesHere? : WhatGoesHere?; 
} 
+1

Какой тип столбца в базе данных? Integer? Вы должны просто указать значение читателя в тип перечисления. –

+0

Если тип данных в таблице SQL является int, тогда вы просто бросаете его как целое число, а затем Enum.TryParse против него. Я могу дать вам пример кода, если вы хотите. – Casey

+2

Примером является следующий, если тип данных SQL является целым числом: obj.OutCome = (OutCome) sqlIntValue; – Casey

ответ

3
while(reader.Read()) 
{ 
    Id = Convert.IsDbNull(reader[0]) ? Convert.ToInt32(0) : Convert.ToInt32(reader[0]); 
    Name = Convert.IsDbNull(reader[1]) ? string.Empty : reader[1].ToString(); 
    FinalOutcome = Convert.IsDbNull(reader[2]) ? FinalOutcome.DontKnow : (Outcome) Convert.ToInt32(reader[2]); 
} 
0

Предполагая, что ваш столбца источника является обнуляемым INT:

FinalOutcome = !Convert.IsDbNull(reader[2]) ?(OutCome)reader[2] : (OutCome)0; 
+0

Исправлено, я просто добавил не :) – Maess

Смежные вопросы