Найдите идентификатор и верните строковое значение. - PullRequest
1 голос
/ 14 апреля 2020

У меня есть контроллер .NetCore 3 Entity Framework, который возвращает такой объект:

var games = await _context.Game
   .Select(x => new GameEntity
   {
       Id = x.Id,
       Title = x.Title,
       GameCharacterClasses = x.GameCharacterClasses

    }).ToListAsync();   

Класс GameEntity выглядит следующим образом:

public partial class GameEntity
{
    public GameEntity()
    {
        GameCharacterClasses = new HashSet<GameCharacterClasses>();
    }

    public long Id { get; set; }
    public string Title { get; set; }

    public virtual ICollection<GameCharacterClasses> GameCharacterClasses { get; set; }
}

GameCharacterClasses - это массив с Идентификатор игры и идентификатор класса персонажа.

Дело в том, что мне действительно нужно имя персонажа, а не идентификатор игры или класса персонажа.

Есть ли способ сделать основанная на коде таблица или переменная, чтобы я мог найти нужное имя CharacterClass на основе Id?

Например, если массив GameCharacterClasses содержит Ids (GameId, CharacterClassId)

[(5, 1), (5, 4), (5, 7)] 

Тогда массив должен содержать

'Wizard', 'Fighter', 'Cleric'?

Я пытался использовать сложное дерево if / then, но оно вышло из-под контроля.

Я хотел бы иметь какой-то тип поиска на основе переменная, если это возможно ... как:

0 : Thief
1 : Wizard
2 : Paladin
3 : Assassin
 etc...

Есть ли способ сделать это в c#?

Спасибо!

1 Ответ

1 голос
/ 14 апреля 2020

У вас есть перечисление с именем CharacterClass

public enum CharacterClass
{
    Thief= 0,
    Wizard= 1,
    Paladin= 2,
    Assassin= 3,
}

Затем вы будете называть его так, используя Enum.GetName

public string GetNameFromId(int charClassId)
{
    return Enum.GetName(typeof(CharacterClass), charClassId);
}
...