将字符串转换为小字符串

本文关键字:字符串 转换 | 更新日期: 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() 工作正常 非常感谢大家的支持