0

助けていただけますか?

私は 2 つのテーブルで構成されるデータベースを持っています: TestData と Core テーブル TestData には列があります: ID (int) Core (int) Name(NVARCHAR) など... Table Core には列があります: ID (int) CoreName (Nvarchar)

Testdata (testdata.Core) の列が Core.CoreID にリンクされるように関係を設定したので、すべてのコア タイプを 1 つのテーブルに保持し、数値 (int) を使用してメインの TestData テーブルでそれらを記述できます。

LINQ c# を使用しており、内部結合に相当するグリッドビューにバインドされた結果を表示して、TestData テーブルの ID 列と Name 列、およびコア テーブルの CoreName を示すグリッドビューの結果が得られるようにしたいと考えています。

これまでのところ、私はこのコードを持っていますが、動作しているように見えますが、bc.CoreID と b.Core が変数 coreVar に等しいなど、2 つの条件を指定した場合にのみ機能します。

今、潜在的にもっと多くの列と変数を持つことができるので、最初からこれを正しくしたいので、以下よりも良い方法があるはずです?

どんな助けでも大歓迎です....

protected void Page_Load(object sender, EventArgs e)
{
    coreLabel.Text = "2";
    dbLabel.Text = "5";
    widthLabel.Text = "54mm";

    int coreVar = Convert.ToInt32(coreLabel.Text);

    var gridQuery = from b in _entity.TestData
                    from bc in _entity.CoreData
                    where (bc.CoreID == (coreVar)) && (b.Core ==(coreVar))
                    select new {b.ID, bc.coreName};


    resultGrid.DataSource = gridQuery;
    resultGrid.DataBind();

}
4

1 に答える 1

0

OK、クエリを動的に拡張する方法を探しているようです。

var gridQuery = from b in _entity.TestData
                from bc in _entity.CoreData
                select new {b.ID, bc.coreName};

if (coreVar.HasValue)
{
   gridQuery = gridQuery.Where(bc.CoreID == coreVar.Value) 
                           && (b.Core == coreVar.value);
}
if (b.HasValue)
{
   gridQuery = gridQuery.Where(bc.B == b.Value) 
                           && (b.B == b.Value);
}
if ....

これANDにより、定義された変数ごとにクエリに条件が追加されるため、より多くの条件が定義されると、結果はより制限されます。

于 2012-08-24T15:34:47.883 に答える