2011-12-02 13 views
0

私はPatientというテーブルを持つデータベースを持っています。私の見解では私が持っている:私のコントローラで詳細ビューの複数のレコード

<h2>Search by Patient_Name</h2> 

@using (@Html.BeginForm("DetailsbyName", "Patient")) 
{  
@Html.Label("First Name") 
@Html.TextBoxFor(model => model.First_Name) 
<br /> 
@Html.Label("Last Name") 
@Html.TextBoxFor(model => model.Last_Name) 

<input type="submit", value="Submit"/>} 

には、次の方法であって、ユーザーがデータベーステーブルに複数回発生姓または名を入力

public ActionResult DetailsbyName(Patient _patient) 
     { 
      string Fname = _patient.First_Name; 
      string Lname = _patient.Last_Name; 

      try 
      { 
      Patient patient = db.Patients.Single(p => p.First_Name == Fname); 
      patient = db.Patients.Single(p => p.Last_Name == Lname); 

       return View(patient); 
      } 
      catch 
      { 
       return RedirectToAction("About", "Home"); 
      } 
     } 

db.Patients.Singleスロー例外。これを処理するのに、.Single以外は何を使用しますか?

たとえば、ユーザーが名前を入力します。John 姓DBに複数の「John」がある場合は、現在例外が発生しています。または、DBに複数の「Smith」という姓がある場合は、例外が発生します。

ありがとうございました。助けのための

List<Patient> patientList = db.Patients.Where(p => p.Last_Name == Lname || p.First_Name == Fname).ToList(); 

      return View(patientList); 

ありがとう:

は、この作業を手に入れました!

答えて

0

複数のレコードが返されたときに何をするかは、あなた次第です。あなたのビューのモデルをリストにして、それらをすべてあなたのビューに表示することができます。

その後、必要があります:

List<Patient> patientList = db.Patients.Where(p => p.Last_Name = LName || p.First_Name = FName).ToList(); 
+0

同じこと...参照する方法がわかりません。Intellisenseはこれを認識しないことを親切に伝えています。 – HendPro12

+0

System.Data.Linqを参照しましたか? – xbrady

0

try db.patients.where(p => p.LastName = LName)、FNameと同じです。また、複数のエントリが存在する可能性があるため、これをリストとして再確認する必要があります。

+0

私はこれをしようとすると、私のインテリセンスがdb.patient.where – HendPro12

+0

に.whereの下に波線私に赤を与えるが、私はこれが動作するために参照する必要がある特定のライブラリはありますか?私はmsdnを見てみましたが、結果は見つかりませんでした。 – HendPro12

関連する問題