c# - 使用枚举数据 C# 创建对象列表

标签 c# algorithm enums

所以我有一个枚举:

public enum myEnum
{
    IBM = 1,
    HP = 2,
    Lenovo = 3
}

我有一个 Brand

public class Brand
{
    public Brand(string name, int id)
    {
        Name = name;
        Id = id;
    }

    public string Name { get; private set; }
    public int Id { get; private set; }
}

我想创建一个 Brand 对象列表,其中填充了来自 MyEnum 的数据。像这样的东西:

private IEnumerable<Brand> brands = new List<Brand>
{
    new Brand(myEnum.IBM.ToString(), (int) myEnum.IBM),
    new Brand(myEnum.HP.ToString(), (int) myEnum.HP),
    new Brand(myEnum.Lenovo.ToString(), (int) myEnum.Lenovo),
};

我可以创建两个数组 - 一个具有枚举名称,另一个具有枚举 ID,并 foreach 它们为每次迭代创建 Brand 对象,但想知道是否有更好的解决方案。

最后,我将采用 Royi Mindel 解决方案,因为根据我的说法,这是最合适的。非常感谢 Daniel Hilgarth 的回答以及他帮助 Royi Mindel 建议生效。如果可以的话,我会把这个问题归功于他们两个。

public static class EnumHelper
{
    public static IEnumerable<ValueName> GetItems<TEnum>() 
        where TEnum : struct, IConvertible, IComparable, IFormattable
    {
        if (!typeof(TEnum).IsEnum)
            throw new ArgumentException("TEnum must be an Enumeration type");

        var res = from e in Enum.GetValues(typeof(TEnum)).Cast<TEnum>()
                  select new ValueName() { Id = Convert.ToInt32(e), Name = e.ToString() };

        return res;
    }
}

public struct ValueName
{
    public int Id { get; set; }
    public string Name { get; set; }
}

最佳答案

var brands = Enum.GetValues(typeof(myEnum))
                 .Cast<myEnum>()
                 .Select(x => new Brand(x.ToString(), (int)x))
                 .ToArray();

关于c# - 使用枚举数据 C# 创建对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220207/

相关文章:

c# - 如何在 UWP(.NET 通用应用程序)中连接到 MSSQL 服务器

c# - 无法确定相关操作的有效顺序?

c# - 如何解析 CET/CEST 日期时间?

java - 如何将 Map 封装到自定义对象中

swift - 使用不存在的 rawValue 初始化的枚举不会失败并返回 nil

c# - 在 C# 中初始化变量时出现错误

python - 我如何检查我的线路是否与 NFA 匹配?

algorithm - 在 3 个未知变量上找到 N 多项式方程组的数值解的快速算法是什么?

algorithm - 3D 中两个凸多边形之间的距离

c++ - 代码风格 - 我应该如何根据许多可能的值验证整数?