-1

I have a controller where if the specific data doesn't exist it will create a new row otherwise it will return an alert that the data is already existing. The problem is that I have a query where it always say not null even my table is empty.

controller:

 public ActionResult CreateDisease(int? diseaseID, int? assessmentID, DiseaseList diseaselist)
    {
        var data = from x in db.DiseaseLists where ((x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)) select x;

        if (data == null)
        {
            diseaselist.DiseaseID = diseaseID;
            diseaselist.AssessmentID = assessmentID;
            db.DiseaseLists.Add(diseaselist);
            db.SaveChanges();
            return Json("Success", JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json("Already Exist", JsonRequestBehavior.AllowGet);
        }

    }
kielou
  • 437
  • 3
  • 18

2 Answers2

0

Your data will not be null, it will only be an empty list. Change your code to this to check if the object you are looking for is found.

public ActionResult CreateDisease(int? diseaseID, int? assessmentID, DiseaseList diseaselist)
    {
        var data = from x in db.DiseaseLists where ((x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)) select x;

        if (!data.Any())
        {
            diseaselist.DiseaseID = diseaseID;
            diseaselist.AssessmentID = assessmentID;
            db.DiseaseLists.Add(diseaselist);
            db.SaveChanges();
            return Json("Success", JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json("Already Exist", JsonRequestBehavior.AllowGet);
        }

    }
Ivan Mladenov
  • 1,787
  • 12
  • 16
0

as Stephen Muecke said in the comment above, it will never be null, just empty and that is why it keeps returning an object so I tried CodeCaster's suggestion and it works perfectly.

instead of

var data = from x in db.DiseaseLists where ((x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)) select x;

I tried

var data = db.DiseaseLists.Where(x => (x.AssessmentID == assessmentID) && (x.DiseaseID == diseaseID)).SingleOrDefault();

and it works perfectly.

kielou
  • 437
  • 3
  • 18