我有我的这个功能,它从数据库中选择所有房间类型,我将值从数据表转换为通用列表,以优化系统的速度,我正在创建我的问题是如何隐藏每个存储为字段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"
请求的样本数据:
答案 0 :(得分:3)
也许这个领域有空间?试试rt.Field<string>("IsActive").Trim()
。
好的,如果你检查rt.Field<string>("IsActive")
并且肯定是UTF8值为89('Y'
)或121('y'
)的单个字符,那么我的下一个猜测就是它是属性。
RoomType.IsActive
是自动财产吗?如果没有,你能确定吸气剂和定位器是否正确吗?
如果不是这样,并且在return roomTypes;
一切看起来都不错,那么你的值会在调用堆栈的某个地方被更改。
答案 1 :(得分:2)
试试这个。
IsActive = rt.Field<string>("IsActive").Trim().ToUpper().Equals("Y")
无需指定true false。