2

我有我的这个功能,它从数据库中选择所有房间类型,我正在将数据表中的值转换为通用列表以优化我正在创建的系统的速度我的问题是如何隐藏存储的每个值字段 isActive 具有来自“Active”/“Inactive”数据库的值,我必须在 C#.net 4.0 中将其转换为布尔值,你们可以帮我解决这个问题吗?

         internal static List<RoomType> FetchRoomTypeList()
         {
             List<RoomType> roomTypes = new List<RoomType>();
             SqlCommand commRoomTypeSelector = ConnectionManager.MainConnection.CreateCommand();
             commRoomTypeSelector.CommandType = CommandType.StoredProcedure;
             commRoomTypeSelector.CommandText = "Rooms.asp_RMS_RoomTypeList_Select";
             SqlDataAdapter da = new SqlDataAdapter(commRoomTypeSelector);
             DataSet ds = new DataSet();
             da.Fill(ds);
             roomTypes = (from rt in ds.Tables[0].AsEnumerable()
                          select new RoomType
                          {
                              RoomTypeID = rt.Field<int>("RoomTypeID"),
                              RoomTypeName = rt.Field<string>("RoomType"),
                              LastEditDate = rt.Field<DateTime>("LastEditDate"),
                              LastEditUser = rt.Field<string>("LastEditUser"),
                              IsActive = rt.Field<string>("IsActive") == "Active"
                          }
                         ).ToList();

             return roomTypes;
         }

下面的行不返回真值,它总是返回假值

IsActive = rt.Field<string>("IsActive") == "Active"

要求的样本数据:

在此处输入图像描述

4

2 回答 2

3

也许该领域有空间?试试rt.Field<string>("IsActive").Trim()


好的,如果您检查rt.Field<string>("IsActive")它肯定是一个 UTF8 值为 89 ( 'Y') 或 121 ( 'y') 的单个字符,那么我的下一个猜测是它是属性。

RoomType.IsActive自动属性吗?如果不是,你能确保 getter 和 setter 是正确的吗?

如果不是这样,并且return roomTypes;一切看起来都不错,那么您的值正在调用堆栈的某处被更改。

于 2011-10-08T03:37:44.490 回答
2

试试这个。

IsActive = rt.Field<string>("IsActive").Trim().ToUpper().Equals("Y")

无需指定真假。

于 2011-10-08T03:54:32.753 回答