1

休暇理由の Enum を作成しました。これを文字列に変換したいのですが、エラーが発生します。

実際には、データセットを使用してグリッドビューでデータをバインドしたいのですが、この目的のためにレイヤーで作業しています。

質問の回答が 1 行になることはわかっていますが、さまざまなサイトから正確な解決策が見つからなかったため、ここで質問することにしました

私はC#が初めてなので助けてください

カスタムタイプレイヤーの列挙型クラスは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sherserve.CustomTypeLayer
{
    public enum LeaveReason
    {
        Sick,
        Planned,
        Other
    }
}

最後に、ビジネス ロジック レイヤーを次に示します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sherserve.DataAccessLayer;
using Sherserve.CustomTypeLayer;
using System.Data;

namespace Sherserve.BusinessLogicLayer
{
    public class LMSManager
    {

        LMSRepository objLMSRepository = new LMSRepository();

        public void EmployeeLeave(EmployeeLeave LeaveInsert)
        {
            objLMSRepository.InsertLeave(LeaveInsert);
        }

        public List<CustomTypeLayer.EmployeeLeave> GetLeaveRecord(int emplid)
        {

            DataSet ds = objLMSRepository.GetLeaveRecord(emplid);
            List<EmployeeLeave> leavelist = new List<EmployeeLeave>();
            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                for (int a; a < ds.Tables[0].Rows.Count; a++)
                {

                    DataRow dr = ds.Tables[0].Rows[a];
                    EmployeeLeave leave = new EmployeeLeave();
                    leave.DateFrom = Convert.ToDateTime(dr["dt_from"]);
                    leave.DateTo = Convert.ToDateTime(dr["dt_to"]);
                    leave.EmployeeId = Convert.ToInt32(dr["EmployeeID"]);
                    leave.Reason = Convert.ToString(dr["txt_reason"]);
                    //leave.LeaveType = Convert.ToString(dr["id_leave_type"]);
                    leavelist.Add(leave);
                }
            }
            return leavelist;
        }
    }
}

私がコメントしたビジネスロジック層で見ることができます

leave.LeaveType = Convert.ToString(dr["id_leave_type"]);

実際には LeaveType は列挙型であり、今は文字列に変換したいので、エラーは表示されません....

4

1 に答える 1

5

Enum.Parse (Type,String,Boolean ignoreCase) または Enum.Parse(Type,String)メソッドを使用します。

leave.LeaveType=(LeaveReason)Enum.Parse(typeof(LeaveReason),
                                         dr["id_leave_type"].ToString(),true);
于 2012-08-30T09:39:54.820 に答える