Vb.net 重新使用linq变量

Vb.net 重新使用linq变量,vb.net,linq,visual-studio-2017,Vb.net,Linq,Visual Studio 2017,我成功地使用了一些linq来填充一些变量,但为了提高效率,我希望在设置变量nextMDTID、nextPatientID、nextCareID和nextMDTDate时避免当前的重复。 我是否可以创建一个变量来保存使用linq查询生成的数据,然后重新使用它以避免重复 Dim thisPTOrder = (From p In ThisMDTData Where p.MDTID = Request.QueryString("MDTID") Select p.PTOrder).FirstOrD

我成功地使用了一些linq来填充一些变量,但为了提高效率,我希望在设置变量nextMDTID、nextPatientID、nextCareID和nextMDTDate时避免当前的重复。 我是否可以创建一个变量来保存使用linq查询生成的数据,然后重新使用它以避免重复

    Dim thisPTOrder = (From p In ThisMDTData Where p.MDTID = Request.QueryString("MDTID") Select p.PTOrder).FirstOrDefault
    Dim nextPTOrder = thisPTOrder + 1
    Dim d = ThisMDTData.Where(Function(p) p.PTOrder = nextPTOrder And p.PTOrder <= p.PTOrder)
    Dim nextMDTID = (From p In ThisMDTData Where p.PTOrder = nextPTOrder And p.PTOrder <= p.MaxPTOrder Select p.MDTID).FirstOrDefault
    Dim nextPatientID = (From p In ThisMDTData Where p.PTOrder = nextPTOrder And p.PTOrder <= p.MaxPTOrder Select p.PatientID).FirstOrDefault
    Dim nextCareID = (From p In ThisMDTData Where p.PTOrder = nextPTOrder And p.PTOrder <= p.MaxPTOrder Select p.CareID).FirstOrDefault
    Dim nextMDTDate = (From p In ThisMDTData Where p.PTOrder = nextPTOrder And p.PTOrder <= p.MaxPTOrder Select p.MDTDate).FirstOrDefault
Dim thisPTOrder=(从ThisMDTData中的p开始,其中p.MDTID=Request.QueryString(“MDTID”)选择p.PTOrder)
Dim nextPTOrder=此PTORDER+1

Dim d=ThisMDTData。其中(函数(p)p.PTOrder=nextpttorder和p.PTOrder使用
d
的正确定义,可以简化结果提取:

Dim d = ThisMDTData.Where(Function(p) p.PTOrder = nextPTOrder And p.PTOrder <= p.MaxPTOrder).Select(Function(p) New With { p.MDTID, p.PatientID, p.CareID, p.MDTDate }).FirstOrDefault
Dim nextMDTID = d?.MDTID
Dim nextPatientID = d?.PatientID
Dim nextCareID = d?.CareID
Dim nextMDTDate = d?.MDTDate

将它定义为一个老式函数,并在需要时调用它?什么是
nextPTOrder
?@Ofiris它只是一个递增1的变量conditionally@Ofiris我更新了一个问题,这个问题可能有帮助,也可能没有帮助。为什么你认为这样会“更有效率”?因为这无关紧要。
Dim nextPatientID = If(d?.PatientID, CType(Nothing, Integer))