将字符串转换为小字符串
本文关键字:字符串 转换 | 更新日期: 2023-09-27 18:34:03
我有单选按钮(用于男性和女性检查) 如果我尝试将字符串(性别)转换为数据库(smallint),我遇到错误的问题
这是我的代码:
public class MakeAppointment
{
private MakeApptEntities newAppointment = new MakeApptEntities();
public void add( string FirstName, string LastName, string Sex) {
tbl_MakeAppointment_MA nAppt = new tbl_MakeAppointment_MA();
tbl_PatientDetails_PD pDetails = new tbl_PatientDetails_PD();
pDetails.PD_FirstName = FirstName;
pDetails.PD_LastName = LastName;
pDetails.PD_Sex = Convert.ToInt16(Sex);
}
通常
对于这样的事情,我喜欢使用enum
,因为 EF 现在支持枚举。如果无法更改模型和数据库架构,则可以创建一个扩展方法来为您进行转换。尝试这样的事情:
public static class MyExtensions
{
public static Int16 ToDbValue(this string sex)
{
switch (sex.ToLower())
{
case "male":
return 0;
case "female":
return 1;
default:
// throw exception, or return what you want as default
}
}
}
然后,您可以在add
方法中使用它:
pDetails.PD_Sex = sex.ToDbValue();
注意:更改上述switch/case
中的值以与您使用的值相对应。
确保此类在MakeAppointments
类中可见。 最简单的方法是将代码放在同一个文件中。如果您认为您会在其他地方使用ToDbValue
方法,请为此类创建一个单独的文件,并确保它与 MakeAppointments
位于同一名称空间中。
使用 Int16.Parse 而不是 convert.toInt16:
pDetails.PD_= Int16.Parse();
*对常量使用枚举类型也是一个非常好的主意!
亲爱的Asghraf,我认为问题出在其他地方,我很确定Int16.Parse。检查输入参数的值,并通过放置断点来跟踪程序。查看以下有关将字符串转换为数字的链接:
http://msdn.microsoft.com/en-us/library/bb397679.aspx
我确实将数据库中PD_数据类型从 tiny int 更改为 int,现在使用 Int32.Parse() 工作正常 非常感谢大家的支持