如何将Enum转换为ViewModel

时间:2013-04-16 23:58:46

标签: c# enums asp.net-web-api

我正在使用Web Api构建基于Enum的ViewModel。此视图模型将发送id和名称。基本上我想使用这个viewModel来使用dropdownList。

这是我的代码:工作正常,但我不想在Web Api中使用ListItem。

// GET api/values
    public List<DropdownViewModel> Get()
    {
        List<DropdownViewModel> ddlList = new List<DropdownViewModel>();

        foreach (int r in Enum.GetValues(typeof(CountryEnum)))
        {
            ListItem item = new ListItem(Enum.GetName(typeof(CountryEnum), r), r.ToString());
            ddlList.Add(new DropdownViewModel
            {
                id = item.Value,
                name = item.Text                    
            });
        }

        return ddlList;
    }

任何人都可以在不使用ListItem的情况下重新考虑此代码吗?

1 个答案:

答案 0 :(得分:0)

Linq Select 方法应该有效。

编辑:这只是表明如果没有经过测试就无法运行。这是经过测试的。它应该工作。

public List<DropdownViewModel> Get()
{
    return Enum.GetValues(typeof (CountryEnum)).Cast<int>()
        .Select(id => new DropdownViewModel
        {
            id = id,
            name = Enum.GetName(typeof (CountryEnum), id)
        }).ToList();
}