【问题标题】:Enum Conversion to String枚举转换为字符串
【发布时间】:2012-08-25 00:09:19
【问题描述】:

我已经创建了休假原因的枚举,现在我想将其转换为字符串,但出现错误。

实际上我想使用数据集在网格视图中绑定数据,为此我正在分层工作。

我知道我的问题的答案将是单行的,但我没有从不同的网站找到确切的解决方案,这就是为什么决定在这里提问

请帮助因为我是 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 是枚举,现在我想将其转换为字符串,因此不应该出现任何错误....

【问题讨论】:

  • 如果您在一个机构工作,直接从您的应用程序在线发布代码可能会导致一些问题
  • 题主好像错了;你需要一个从字符串到枚举的转换
  • Vamsi Krishna 能否请您告诉我我的代码是如何产生问题以在此处发布的???

标签: c# asp.net data-binding dataset


【解决方案1】:

使用Enum.Parse(Type,String,Boolean ignoreCase) or Enum.Parse(Type,String) 方法。

leave.LeaveType=(LeaveReason)Enum.Parse(typeof(LeaveReason),
                                         dr["id_leave_type"].ToString(),true);

【讨论】:

  • 它帮助了我,但我认为你忘记在最后添加 true。我认为确切的解决方案是 leave.LeaveType = (LeaveReason)Enum.Parse(typeof(LeaveReason), dr["id_leave_type"].ToString(),true);你觉得呢???
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 2014-03-18
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
相关资源
最近更新 更多