私の前の質問から引き続き、私はID値を 'Lookup'コントローラから別のコントローラメソッド 'Charges'に渡します。ビューモデルにおいてリストを使用せずにビューモデルからコントローラに値を渡すにはどうすればよいですか?
Function Charges(id As String) As ActionResult
Dim Patient As New LookupVM()
Patient.GetHistory(paid)
Return View(Patient)
End Function
、iがGetHistory(ID)リストの方法があり、listProcedure iがビューに表示されるコントローラに戻って渡したい値を保持するリストです。
Public Property listProcedure As List(Of LookupVM)
Public Function GetHistory(id As String) As List(Of LookupVM)
Using db As New DbContext()
' SQL query
'====================
Dim idd = New SqlParameter("@id", "%" & id & "%")
Dim query As String = "select p.id id, pv.pvid pvid
from patient p
join patient_visit pv on p.id = pv.id
where p.paid like @id"
Dim Results = db.Database.SqlQuery(Of LookupVM)(query, idd).ToList()
For Each item In Results
Dim pvid = New SqlParameter("@pvid", "%" & item.pvid & "%")
Dim query2 As String = "select po.remarks remarks, po.entereddt entereddt, po.Consultant Consultant
from procedure_order po
join procedures p on po.pdid = p.pdid
where po.pvid like @pvid
order by po.entereddt desc"
Dim Results2 = db.Database.SqlQuery(Of LookupVM)(query2, pvid).ToList()
For Each item2 In Results2
Dim ProcedureList2 As New LookupVM()
ProcedureList2.remarks = item2.remarks
ProcedureList2.entereddt = item2.entereddt
ProcedureList2.ForConsultant = item2.ForConsultant
listProcedure.Add(ProcedureList2)
Next
Next
Return listProcedure
End Using
End Function
これらの値をリスト以外の何かを介してコントローラに渡すことができるのだろうかと思います。可能であれば、何ができますか?そのリストの場合、私はforeachループを使用せずにページに表示することはできません。
別の質問は、私のコードは概念的に正しいか間違っていますか?私が走ったとき、上記のコードを含む72の値のリストを表示するのに5分かかったからです。私はそれがあまりにも長くかかると思う。より速く読み込む方法はありますか?
これは、int値ではないため、LIKEを使用する必要がありました。それは 'A123'のようなものなので、そのvarchar。申し訳ありませんが、私はかなり理解していません: "あなたがジョインするために使用する列にインデックスを持っています。"インデックスがあるかどうかはどうすればわかりますか?それらは主キーと同じですか? – Nurul
私はリストの使用を批判していません。私はまだテーブルの値を表示するためにリストを使用します。ビューの別々の場所に値を表示する必要があります。あなたの理解を容易にするために、私はこのページから私の値の配置の例を取っています。私が達成しようとしているのは、このページの右上にある「尋ねられた閲覧済み」のようなものです。値「today」、「20 times」および「today」がデータベースから取り出されます。私はそれぞれの部分にforeachループを実行しなければなりませんでした。そうでない場合は、まだ値がないページを実行すると、その部分全体が表示されません。 – Nurul
LIKEの使用について、A12が発生すると、 'LIKE%A12%'は 'A12'と' A123'の両方と一致します。インデックスについて:Management Studioで、テーブルを展開して[+]インデックスを展開します。必要に応じて、右クリックメニュー項目「新規索引」を使用します。 –