C# 当数据库为空时显示消息框

C# 当数据库为空时显示消息框,c#,sql,database,forms,messagebox,C#,Sql,Database,Forms,Messagebox,谢谢你看我的问题。基本上,当用户单击按钮时,它会根据数据库的内容在消息框中显示以下内容之一:您的假期已被授权、您的假期已被拒绝或您的假期请求已发送 我希望这样,当用户单击按钮时,数据库中没有任何数据,因为用户没有发送假日请求,就会收到一个消息框,说他们没有预订假日 这是我的密码: private void button2_Click_1(object sender, EventArgs e) { System.Windows.Forms.Form

谢谢你看我的问题。基本上,当用户单击按钮时,它会根据数据库的内容在消息框中显示以下内容之一:您的假期已被授权、您的假期已被拒绝或您的假期请求已发送

我希望这样,当用户单击按钮时,数据库中没有任何数据,因为用户没有发送假日请求,就会收到一个消息框,说他们没有预订假日

这是我的密码:

            private void button2_Click_1(object sender, EventArgs e)
    {
        System.Windows.Forms.Form f = System.Windows.Forms.Application.OpenForms["Login"];
        SundownDatabaseEntities6 db = new SundownDatabaseEntities6();
        int id = Convert.ToInt32(((Login)f).idTb.Text);

        var getrecords = db.Holidays.Where(a => a.Id == id).ToList();

            foreach (var record in getrecords)
            {
                if (record.YesOrNo == "yes")
                {
                    MessageBox.Show("The manager has accepted your holiday (From " + record.Datefrom + " - " + record.Dateto + ").");
                }
                else if (record.YesOrNo == "no")
                {
                    MessageBox.Show("The manager has declined your holiday request (" + record.Datefrom + " - " + record.Dateto + ").");
                }
                else if (record.YesOrNo == null)
                {
                    MessageBox.Show("Your holiday request (" + record.Datefrom + " - " + record.Dateto + ") has been sent.\nWaiting for manager to authorise it...");
                }
                else if (record != null)
            {
                MessageBox.Show("You have not booked an holiday.");
            }
            }
        }

问题在于代码的最后一位,“else if(record!=null)”不会检查数据库是否为空。有什么建议吗?谢谢

您应该检查
getrecords.Count()


因为如果
getrecords
为空,它将不会转到
foreach

您应该检查
getrecords.Count()


因为如果
getrecords
为空,它将不会转到
foreach

在循环之前,您可以检查
如果(!db.Holidays.Any(a=>a.Id==Id))
并显示“no holiday requested”消息并返回wo而不进入循环。在检查record.YesOrNo之前,您必须先检查'record'是否为数字。若记录为空,那个么您将在record.YesOrNo上得到一个异常。您没有异常处理程序,因此异常会跳转到代码中的其他位置。在循环之前,您可以检查
如果(!db.Holidays.Any(a=>a.Id==Id))
并显示“no holiday requested”消息并返回wothout而不进入循环。在检查record.YesOrNo之前,您必须检查“record”是否为数字。若记录为空,那个么您将在record.YesOrNo上得到一个异常。您没有异常处理程序,因此异常会跳转到代码中的其他位置。
var getrecords = db.Holidays.Where(a => a.Id == id).ToList();
if (getrecords.Count() == 0) 
{
 //  ... here your logic
}
if (!db.Holidays.Any ())