作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我有一个枚举:
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/
我是一名优秀的程序员,十分优秀!