2016-03-30 15 views
0

次は、Entity Frameworkコンテキストを使用してSQL Serverを照会する私の元のコードです。データベースに照会し、StartsWithメソッドを使用して、ユーザー・クライアント側が入力した文字列と照合します。これにより、ユーザーは3つのフィールド(FirstName、LastName、およびHOHUPI)の任意の組み合わせを入力できます。Linq-C#動的検索ページのクエリ

var results = db.APPLICANTs.Where(p => (p.RESP_FRST.StartsWith(model.FirstName) || model.FirstName == null) 
       && (p.RESP_LST.StartsWith(model.LastName) || model.LastName == null) && (p.HOH_UPI.ToString().StartsWith(model.HOHUPI) || model.HOHUPI == null)) 
       .OrderBy(p => p.RESP_FRST); 

このクエリは、1つのテーブル(申請者)のみを検索します。しかし、結果に含める必要がある別のテーブル(Contact_Info)があります。私はEFモデルにナビゲーションプロパティを持っていません。

私は次のことを試してみた:

var hID = from APPLICANT in context.APPLICANTs 
          join CONTACT_INFO in context.CONTACT_INFO on APPLICANT.HOH_UPI equals CONTACT_INFO.HOH_UPI 
          where (APPLICANT.HOH_UPI.ToString().StartsWith(model.HOHUPI)) && (APPLICANT.RESP_FRST.StartsWith(model.FirstName)) 
          && (APPLICANT.RESP_LST.StartsWith(model.LastName)) && (CONTACT_INFO.HM_PHN_NMB.ToString().StartsWith(model.HM_PHN_NMB)) 
          orderby APPLICANT.RESP_FRST 
          select APPLICANT; 

       model.SearchResults = hID.ToPagedList(pageIndex, RecordsPerPage); 

これにより、ユーザは、すべての4つのテキストボックスに値(姓、名、hohupi、および電話番号を入力するだけであれば動作します、私は処方するのに助けを必要としています。ユーザーは1つだけまたはテキストボックスの任意の組み合わせで検索できるようにクエリ。

申請テーブルの主キーがHOH_UPIあるとContact_Info表の外部キーがHOH_UPIある。

はそんなにありがとうあなたの助けに!

答えて

0

私はそれが働いて得た:(||)論理AND(& &)を使用する場所を知ること

var hID = from APPLICANT in context.APPLICANTs 
          join CONTACT_INFO in context.CONTACT_INFO on APPLICANT.HOH_UPI equals CONTACT_INFO.HOH_UPI 
          where (APPLICANT.HOH_UPI.ToString().StartsWith(model.HOHUPI) || model.HOHUPI == null) && (APPLICANT.RESP_FRST.StartsWith(model.FirstName) || model.FirstName == null) 
          && (APPLICANT.RESP_LST.StartsWith(model.LastName) || model.LastName == null) && (CONTACT_INFO.HM_PHN_NMB.ToString().StartsWith(model.HM_PHN_NMB) || model.HM_PHN_NMB == null) 
          orderby APPLICANT.RESP_FRST 
          select APPLICANT; 

をし、OR鍵となりました。