0

クエリの作成に問題があります。

私が達成しようとしているのは、次の基準に準拠するクエリを作成することです

   Show all records in table house where 
tbl_house.townId =tbl_town.townId 
and house.type = “3bedrooms”

これまでに試したこと

 var house = 
    From m in db.tbl_house 
    Where m.townId ==  tbl_town.townId && m.Bedrooms == "3bedrooms" 
                   Select m

ヘルプやアドバイスをいただければ幸いです

アップデート

不動産会社は 1、2、3 の 3 つあり、不動産会社ごとにアカウントがあるため、不動産会社がログオンしたときに、指定されたハウスタイプのその町のハウスのみを表示したいと考えています。

すべての家にはタウンIDがあります

例: ハウス 1 のタウン ID は 3 で、これはタウン 3 であり、ハウスタイプは「3 ベッドルーム」です。</p>

ハウス 2 のタウン ID は 3 で、これは = タウン 3 であり、ハウスタイプは「2 ベッドルーム」です。</p>

ハウス 3 のタウン ID は 4 で、これはタウン 4 であり、ハウスタイプは「2 ベッドルーム」です。</p>

そこで私がやろうとしているのは、townId が 3 で housetype =”3bedrooms” のすべての家を選択し、townId が 3 に関連付けられている不動産会社にそれらを表示することです。

4

1 に答える 1

0

あなたが何を求めているのかはまだはっきりしていませんが、「テーブルB(「町」)に一致するレコードがあるテーブルA(「家」)のすべてのレコード」を求めているようです。そうでない場合は、「tbl_house.townId = tbl_town.townId」の意味を説明する必要があります。それ以外の場合は、実際には意味がないためです。それ必要な場合は、外部キーフィールドに値があるかどうかを確認する必要があります。

var house = from m in db.tbl_house
            where m.townId.HasValue() && m.Bedrooms == "3bedrooms"
            select m;

試したクエリの問題は、tbl_town.townIdどこに置いても意味がないことです。tbl_townテーブル全体を表すオブジェクトのセットです。そのコンテキストでtownIdは、はフィールド 定義tbl_houseですが、エンティティセットの単一エンティティの実際のフィールドと比較しようとしています。2つのことは同じではなく、直接比較することはできません。それは言うようなものですwhere m.Bedrooms = String-それは構文的に正しくありません。

編集:

更新された質問では、探している町の町IDを知っているようです。その場合は、それをフィルタリングします。代理店に基づいて、必要なIDがわかっているのに、なぜ「tbl_town.townId」を使用しようとしているのかわかりません。

ここでの構文は、関係の方向に完全に依存します。たとえば、TownIdを持つAgencyオブジェクトがある場合、それをフィルタリングする必要があります。

var agency = this.GetTheCurrentAgencySomehow();
var house = from m in db.tbl_house
            where m.townId == agency.townId && m.Bedrooms == "3bedrooms"
            select m;

一方、TownオブジェクトにAgencyIdがある場合は、ナビゲーションプロパティを使用して、house->town->agencyから取得します。

var agency = this.GetTheCurrentAgencySomehow();
var house = from m in db.tbl_house
            where m.town.agencyId == agency.agencyId && m.Bedrooms == "3bedrooms"
            select m;

データモデルの実際の実装の詳細について詳しく知らなければ、実際に具体的にする方法はありません。

于 2012-04-25T03:12:49.243 に答える