C# 使用switch case分配变量

C# 使用switch case分配变量,c#,stored-procedures,switch-statement,C#,Stored Procedures,Switch Statement,我需要在我的存储过程中使用在switch case中分配的变量,但我总是得到意外的结果。请帮助..任何回复都将是很大的帮助。谢谢 private void CheckMessage() { string chk = null; ShortMessage l = new ShortMessage(); string strCommand = "AT+CMGL=\"ALL\""; objS

我需要在我的存储过程中使用在switch case中分配的变量,但我总是得到意外的结果。请帮助..任何回复都将是很大的帮助。谢谢

private void CheckMessage()
        {
            string chk = null;
            ShortMessage l = new ShortMessage();
            string strCommand = "AT+CMGL=\"ALL\"";
            objShortMessageCollection = objclsSMS.ReadSMS(this.port, strCommand);
            foreach (ShortMessage msg in objShortMessageCollection)
            {

                l.Message = msg.Message;
                string[] splt = l.Message.Split('#');
                for (int i = 0; i < splt.Length; i++)
                {
                    string[] parts = splt[i].Split(':');
                    char prefix = Convert.ToChar(parts[0]);
                    string value = parts[1];

                    switch (prefix)
                    {
                        case 'T':
                            l.truck = value;
                            break;
                        case 'D':
                            l.driver = value;
                            break;
                        case 'R':
                            l.receiveby = value;
                            break;
                        case 'A':
                            l.arrivedate = value;
                            break;
                        case 'U':
                            l.unloaddate = value;
                            break;
                        case 'N':
                            l.deliverynote = value;
                            break;
                        case 'L':
                            l.deliverydate = value;
                            break;
                        case 'S':
                            l.deliverystatus = value;
                            break;
                        case 'M':
                            l.mac = value;
                            break;
                        case 'C':
                            l.msgcreatedate = value;
                            break;
                    }

                }
                chk = l.getINFO(l).Tables[0].Rows[0][0].ToString();

                if (chk == "1")
                {

                    this.AutomaticReply();
                    this.DeleteToSim();
                }
                else
                {

                    this.DeleteToSim();
                }

                l = null;
            }


        }
        #endregion

一种可能是你看到的角色不是大写字母,或者你可能会得到一个引导空格。看看这样做是否有帮助:

char prefix = parts[0].Trim().ToUpper()[0];

如果仍然存在问题,请编辑原始帖子并添加ShortMessage类的结构

您的查询将给出输出1。。。。。总是

SELECT 1 FROM Truck trk, Driver drv, DeliveryNotes dnt
                           WHERE trk.Plate_Number = @truck
                             AND drv.DRIVER_ID = @driver
                             AND dnt.DNID = @deliverynote
                             AND dnt.Status = 'N'
应该是

SELECT Top 1 * FROM Truck trk, Driver drv, DeliveryNotes dnt
                           WHERE trk.Plate_Number = @truck
                             AND drv.DRIVER_ID = @driver
                             AND dnt.DNID = @deliverynote
                             AND dnt.Status = 'N'

请使用断点并通过检查传递给存储过程的值进行调试。 值可能有额外的空间,如“aa bb”使用
TrimEnd(“”)修剪结束值
函数,&请正确解析其数据类型(
Int、Double、DateTime等)
)。您正在阅读并用于其他用途的短信。请检查调用是否为私有/公共
,以便将其值传递给存储过程

char prefix = Convert.ToChar(parts[0]);
使用

继续尝试…

什么是“意外结果”
char prefix = Convert.ToChar(parts[0]);
parts[0]=parts[0].ToUpper();
char prefix = Convert.ToChar(parts[0]);