1

次の問題に直面しています。隣に DropDowList がある検索フィールドが必要です。ユーザーは検索したい項目を選択できます。SQLクエリだけでなく、このLINQコードで作成する必要があります。

これが私のコードです:

var Metadata = from m in db.Metadatas
    join mm in db.Multimedias
    on m.multimediaID equals mm.multimediaID
    where (m.   { Here would i have the selected value from the dropdownlist. } .ToString().Contains(textboxvalue) ||
           mm.  { Here would i have the selected value from the dropdownlist. } .ToString().Contains(textboxvalue))
           && mm.filetype.ToString().Contains(radiobuttonvalue)

次のようなものを入れたい:「Dropdownlist.selectedvalue」をエリアに{ここにドロップダウンリストから選択した値があります。}

皆さんが私の考えと問題を理解してくれることを願っています。

4

2 に答える 2

1

linq ステートメントで join on を行っている理由がわかりません。データベースに外部キー関係が設定されているため、Linq がオブジェクト間の関係を既に知っている場合、これは必要ありません。

あなたができることはこれです:

var Metedata = db.Metadatas;

switch(Dropdownlist.selectedvalue)
{
  case "one":
    Metadata = Metadata.Where(m => m.{selected value field}.Contains(textboxvalue));
    break;

  case "two":
    Metadata = Metadata.Where(m => m.{selected value field}.Contains(textboxvalue));
    break;

  //More use cases
}

完了時にリストから何を選択するかはわかりませんが、関連するオブジェクト (マルチメディアなど) が含まれる場合は、DataLoadOptions (LinqToSQL) または .Include() (EntityFrameworks) を調べてください。

于 2012-10-26T14:28:37.920 に答える
0

SQLクエリを変更するだけです。

if(supportgrp.SelectedItem.Text == "All")

sql = "SELECT * FROM QlyData where Date> ='" + txtstartdate.Text + "'and Date <='" + txtenddate.Text + "'";

そうしないと

sql = "SELECT * FROM QlyData where Date> ='" + txtstartdate.Text + "'and Date <='" + txtenddate.Text + "'and suppgrp ='" + supportgrp.Text + "'";

于 2012-10-26T11:55:32.750 に答える