始终返回不为空

时间:2017-06-20 09:57:41

标签: asp.net-mvc linq

我有一个控制器,如果特定数据不存在,它将创建一个新行,否则它将返回数据已存在的警报。 问题是我有一个查询,即使我的表是空的,它总是说不为空。

控制器:

 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);
        }

    }

2 个答案:

答案 0 :(得分:0)

您的数据不会是null,它只会是一个空列表。将代码更改为此以检查是否找到了您要查找的对象。

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);
        }

    }

答案 1 :(得分:0)

正如Stephen Muecke在上面的评论中所说,它永远不会是空的,只是空的,这就是为什么它不断返回一个对象,所以我尝试了CodeCaster的建议并且它完美无缺。

而不是

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

我试过

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

它完美无缺。

相关问题