私は、特定の条件を満たすレコードのために私たちのデータベース(EF経由で公開されている)を検索するアプリケーションを持っています。メインテーブルは2つあります(ジョブと受信者)。受信者はジョブIDによってジョブテーブルにリンクされます。オプションクエリ内のwhere句
ジョブレコードには、さまざまなフィールド(プロセスの日付、名前、ジョブタイプ)があります。受信者には名前とIDのフィールド(アカウント番号、姓など)が多数あります。
検索するフィールドのリストが表示される検索画面を表示します。 ASP.netコードは、ユーザーが入力した(または選択された)テキストボックスを表示し、それに基づいてクエリを作成します。
私は、最も効率的な方法を見つけようとしています。
ラフロジックは次のとおりです。私はこだわっている
if not string.isnullorempty(txtName.text) then
'Query.Where.Add clause = " AND Name like '@txtName'
'Query.WhereParameters.Add("@txtName",txtNAme.text
end if
if not string.isnullorempty(txtAccountNumber.text) then
.....etc
if not string.isnullorempty(txtFromDate.text) then..
が追加条項に追加する方法を考え出すされています。私はEntity SQLを使うべきですか?
強く型付けされたEFオブジェクトも返すことができますか?ジョブと受信者の両方のオブジェクトを返すことは可能ですか?
私が選択した受信者をした場合。 、仕事。 ....これは正しく解析し、リンク先の受信者オブジェクトとジョブオブジェクトを返しますか?
だから私は呼び出しquery.whereを維持し、中に追加した場合新しい機能、theyllは "と" SQLのようなcominedされる?例:name = johnとdate = @date。彼らがまたはで結合されるように指定する方法はありますか? – Dane
1)はい。 ( 'Query = 'の部分を覚えておいて、' Query.Where'を呼び出してその結果を無視しないでください。)概念的には、 'Query = Query.Where(a).Where(b).Where(c)'は擬似コード) 'Query =(select * from(select * from Query where a)where b)where c)'と同じ結果を返します。 && c) 'と書いてあり、EFはそれをそのまま翻訳します。 2)これには「Union」を使うことができます。 'Query.Where(a).Union(Query.Where(b))'は 'Query.Where(a|| b) 'と同じ結果を返します。 – hvd