способы получения строковых значений из Enum [duplicate]

Решение для PostgreSQL:

final PreparedStatement statement = connection.prepareStatement(
        "SELECT my_column FROM my_table where search_column = ANY (?)"
);
final String[] values = getValues();
statement.setArray(1, connection.createArrayOf("text", values));
final ResultSet rs = statement.executeQuery();
try {
    while(rs.next()) {
        // do some...
    }
} finally {
    rs.close();
}

или

final PreparedStatement statement = connection.prepareStatement(
        "SELECT my_column FROM my_table " + 
        "where search_column IN (SELECT * FROM unnest(?))"
);
final String[] values = getValues();
statement.setArray(1, connection.createArrayOf("text", values));
final ResultSet rs = statement.executeQuery();
try {
    while(rs.next()) {
        // do some...
    }
} finally {
    rs.close();
}
258
задан modiX 9 October 2015 в 14:07
поделиться

8 ответов

Вы можете преобразовать int обратно в элемент перечисления с простым актом, а затем вызвать ToString():

int value = GetValueFromDb();
EnumDisplayStatus enumDisplayStatus = (EnumDisplayStatus)value;
string stringValue = enumDisplayStatus.ToString();
352
ответ дан Kent Boogaart 15 August 2018 в 17:22
поделиться

Если вам нужно получить строку "Visible" без получения экземпляра EnumDisplayStatus, вы можете сделать это:

int dbValue = GetDBValue();
string stringValue = Enum.GetName(typeof(EnumDisplayStatus), dbValue);
124
ответ дан algreat 15 August 2018 в 17:22
поделиться
  • 1
    Этот ответ уже опубликован (как ни странно, у вас больше голосов). – nawfal 9 June 2013 в 00:18
  • 2
    Если вы ответили на вопрос Мандолина, то есть неточность: Enum.GetName возвращает строку, а не Enum – algreat 9 June 2013 в 15:10
  • 3
    о да, вы правы, так +1 для u тоже :) – nawfal 9 June 2013 в 15:30
  • 4
    Ответ Мандолина теперь исправлен – niico 20 March 2017 в 14:14

вы можете просто бросить его

int dbValue = 2;
EnumDisplayStatus enumValue = (EnumDisplayStatus)dbValue;
string stringName = enumValue.ToString(); //Visible

ah .. kent избили меня:)

16
ответ дан Hath 15 August 2018 в 17:22
поделиться

Попробуйте следующее:

string m = Enum.GetName(typeof(MyEnumClass), value);
100
ответ дан nawfal 15 August 2018 в 17:22
поделиться
  • 1
    Это должен быть ответ. – niico 20 March 2017 в 14:13
  • 2
    @nilco этот ответ хорош, но я предпочитаю ответ Kents, главным образом потому, что у меня есть пользовательский атрибут в моих перечислениях & quot; Описание & quot; Затем у меня есть расширение перечисления, чтобы получить описание - это для отображения на экране для пользователя. – harag 12 April 2018 в 15:10

Используйте это:

string bob = nameof(EnumDisplayStatus.Visible);
4
ответ дан Sach 15 August 2018 в 17:22
поделиться

DB to C #

EnumDisplayStatus status = (EnumDisplayStatus)int.Parse(GetValueFromDb());

C # в DB

string dbStatus = ((int)status).ToString();
9
ответ дан user 15 August 2018 в 17:22
поделиться

Просто введите int в тип перечисления:

EnumDisplayStatus status = (EnumDisplayStatus) statusFromDatabase;
string statusString = status.ToString();
1
ответ дан Vivek Jain 15 August 2018 в 17:22
поделиться
0
ответ дан Sameera R. 5 September 2018 в 16:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: