在C#中要取出列舉中的項目的話,可以使用foreach來達到,透過Enum.GetNames()和Enum.GetValues()方法可以分別取出列舉中每個項目的名稱或是值。
要更直覺的使用的話,還是將列舉轉成List
在C#中要取出列舉中的項目的話,可以使用foreach來達到:
foreach( string name in Enum.GetNames( typeof( EnumType ) ) )
{
Console.WriteLine( name );
}
foreach( object value in Enum.GetValues( typeof( EnumType ) ) )
{
Console.WriteLine( ( Int32 ) value );
}
透過Enum.GetNames()和Enum.GetValues()方法可以分別取出列舉中每個項目的名稱或是值。
也可以用下面的方式取得所有的項目:
foreach( EnumType enumType in Enum.GetValues( typeof( EnumType ) ) )
{
Console.WriteLine( enumType );
}
要更直覺的使用的話,還是將列舉轉成List<T>或是IEnumerable<T>型別,使用起來比較親切一些(可以透過LINQ來存取、排序列舉裡面的項目)~所以透過下面的方式,就更方便啦!!
為了達到這個目的,我們可以建立一個EnumHelper,內容如下:
using System;
using System.Collections.Generic;
using System.Linq;
public static class EnumHelper
{
public static List<T> ToList<T>()
{
return Enum.GetValues( typeof( T ) ).Cast<T>().ToList<T>();
}
public static IEnumerable<T> ToEnumerable<T>()
{
return Enum.GetValues( typeof( T ) ).Cast<T>();
}
}
使用方式如下:
/*將EnumType中的項目轉出成為List*/
List<EnumType> enumTypeList = EnumHelper.ToList<EnumType>();
/*項目依名稱排序*/
var sortByName = enumTypeList.OrderBy( r => r.ToString() );
/*項目依照值排序*/
var sortByValue = enumTypeList.OrderBy( r => r );
以上是就是這次的隨手小技巧分享!!