Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这个linq语法查询正确吗?_C#_Linq - Fatal编程技术网

C# 这个linq语法查询正确吗?

C# 这个linq语法查询正确吗?,c#,linq,C#,Linq,我正在使用Linq执行连接多个表的select查询。谁能帮我检查一下,告诉我语法是不是错了?因为,我检查了参数是否被传递,但是在查询中的断点之后,它跳过了foreach循环中的另一个断点,并直接转到return语句。为什么会这样 var query = from po in dbb.prescription join pv in dbb.patient_visit on po.refid equals pv.pvid join pod in dbb

我正在使用Linq执行连接多个表的select查询。谁能帮我检查一下,告诉我语法是不是错了?因为,我检查了参数是否被传递,但是在查询中的断点之后,它跳过了foreach循环中的另一个断点,并直接转到return语句。为什么会这样

var query = from po in dbb.prescription
            join pv in dbb.patient_visit on po.refid equals pv.pvid
            join pod in dbb.prescription_dtls on po.psid equals pod.psid
            join d in dbb.drugs on pod.dgid equals d.dgid
            join a in dbb.admissions on po.refid equals a.adid
            where (pv.paid == medPaid || a.paid == medPaid) &&
                  (po.status == "Pending") && (po.flag == null) &&
                  (po.TCM == false) && (po.EntBy == medUserID)
            orderby pod.UpdOn descending
            select new { pod.psid, pod.dgid, po.status, d.duom };
这是控制器:

[HttpPost()]
public ActionResult SetPrescOrderMyList(string medUserID, string medPaid, string medPvid, string medPsid, string medDgid, string medDoctor, string medType, float medMeasurement, float medTimes, float medDays, string medMeals, string medMorning, string medNight, string medWhenNecessary, string medHours, string medOtherInstruction)
{
    vmConsultation Patient = new vmConsultation();

    Patient.SetPrescriptionOrderMyList(medPaid, medPvid, medPsid, medDgid, medDoctor);
    Patient.LoadPrescriptionOrderList = Patient.GetPrescriptionOrderList(medUserID, medPaid, medPvid);

    return Json(Patient, JsonRequestBehavior.AllowGet);
}

实际上,我正在尝试在将给定查询插入数据库后,使用ajax从该查询返回数据行。但它没有返回任何东西。它跳过了查询中的整个foreach循环。

@GiladGreen您是指控制器吗?调试器行为听起来好像您的查询没有返回任何内容。请记住,枚举表在被枚举时实际上是运行的。至于语法是否错误,我认为编译器是你的朋友。如果它没有抱怨,那就是正确的。当然,它是否真的做了你想要的是一个不同的问题。跳过了整个foreach循环我在你的代码中看不到任何foreach循环。如果LINQ查询编译并运行语法正确,那么在没有看到
vmConsultation
classic的情况下,也很难理解您希望在控制器内部实现什么。我们不可能判断它在逻辑上是否正确。我猜有些连接应该是外部连接。我建议尽可能使用导航属性而不是连接。如果跳过未显示的foreach的主体,则查询将导致空序列。因此,要么(1)查询中提到的几个序列中的任何一个是空的,要么(2)它们不是空的,但联接中的序列之间没有匹配的元素,或者(3)没有匹配where子句的元素。