2017-10-25 15 views
1

ここで似たような質問がありますが、FROM句のsubSelectを仮想テーブルとして実行しても見つからないことがあります。Linq FROMで仮想テーブルとしてsubSelectを使用する方法

私が必要とするほとんどの列は、テーブルにあります。私はデカルト結合を取得せずに結合することができない別のテーブルから必要ないくつかの列があります。私はどのようにLINQにこれを変換するには考えていると、それは朝のデモのために今夜を行わなければならない

SELECT meter_name, a.loc_id, a.loc_name, a.facility_name, meter_type 
FROM meter_table, (SELECT loc_id, loc_name, facility_name 
        FROM facility_table 
        WHERE id = 101) a 
WHERE meter_id = a.fac_id 

は、ここに私のSQLクエリです。

+0

既存のLINQ試行を表示してください。それが動作しない場合、ストレスを感じないでください - あなたはあなたがどこにいるかを見極める必要があります。 – mjwills

+0

さて、以前のクエリではジョインが使用されていましたが、要件が2時間前に変更されるまで機能しました。私の研究は、私が望むかもしれないこの回答(https://stackoverflow.com/a/21941452/1735836)に私を連れて行きましたが、それは非常に複雑で、私はそれが私の必要とするものではないと確信しています。このコードはロックされたマシン上にあります。だから私はそれを再入力する必要があります。できるだけ早く投稿します。 – Patricia

+0

これはあなたの答えです。https://stackoverflow.com/a/27442658/1704458 –

答えて

2

これはリストの各要素は、表の列は、各オブジェクト

List<Meter> meter_table = new List<Meter>(); 
のプロパティになります。すなわち、適切な属性 を保持するデータベーステーブル内のレコードを表し、あなたの meter_tableこの場合 データベース内表し想定

これは、参加するテーブルのfacility_tableを表します。同じ はここに、リストの各要素は、内側がそうのように参加

List<Facility> facility_table = new List<Facility>(); 

はその後、実行、各オブジェクトのプロパティになりますテーブルの列すなわち適切な属性 を保持するデータベーステーブル内のレコードを表します。

var query = from m in meter_table 
      join a in facility_table on m.meter_id equals a.fac_id 
      where a.id == 101 
      select new { meter_name = m.MeterName, 
         loc_id = a.LocId, 
         facility_name = a.FacilityName, 
         meter_type = m.MeterType 
         }; 

場合m.MeterNamea.LocIda.FacilityNamem.MeterTypeは、それぞれのタイプの特性です。

それはまた、可変クエリ参照匿名型のIEnumerableをを注目に値します。上記のクエリの

select new typeName { /* assign values appropriately */} 

:あなたは適切なプロパティを使用して独自の型を定義すること自由に感じ、その後厳密に型指定されたオブジェクトのIEnumerableを返すようにしたい場合は、その後だけにselect newを変更します。

関連する問題