在C#中将Enum转换为Int数组的单行转换

时间:2015-08-11 14:26:19

标签: c# linq enums

在尝试将枚举转换为其值的int []时,我最初提出了啰嗦:

   echo "<table border=2>
    <tr>
   <th>emp_id</th>
   <th>emp_name</th>
   <th>emp_ic</th>
   <th>emp_phone</th>
   <th>emp_address</th>
   <th>medical_notes</th>
   </tr>";


if($data = mysql_query($sql) or die ())
  {

while ( $record = mysql_fetch_array($data))
{

    echo"<tr>";
    echo "<td>" . $record['emp_id'] . "</td>";
    echo "<td>" . $record['emp_name'] . "</td>";
    echo "<td>" . $record['emp_ic'] . "</td>";
    echo "<td>" . $record['emp_phone'] . "</td>";
    echo "<td>" . $record['emp_address']. "</td>";
    echo "<td>" . $record['medical_notes']. "</td>";
    echo "</tr>";
}

它有效,但是......好吧,它不漂亮。

我做了一些搜索,发现人们在多行中使用Enum.GetValues(typeof(Isolations.Enumerations.TypeSelectionScope)) .Cast<Isolations.Enumerations.TypeSelectionScope>().Select(t => (int)t).ToArray() 来实现此目的。所以我尝试了内联。

ConvertAll()

这会产生类型错误,并且在其中添加一些转换将使其像第一次尝试一样混乱。

我还尝试直接演员Array.ConvertAll(Enum.GetValues(typeof(Isolations.Enumerations.TypeSelectionScope)), value => (int)value) 无效:

int[]

在此上添加Enum.GetValues(typeof(Isolations.Enumerations.TypeSelectionScope)).Cast<int[]>() 也会失败。

那么,什么是单线解决方案并不凌乱?

1 个答案:

答案 0 :(得分:3)

Enumerable.Cast<T>遍历集合并将每个项目转换为T

您尝试将每个实例投射到int[] - 您希望将它们转换为int

.Cast<int>()