2016-03-30 10 views
0

LINQのサブクエリに外部フィールドを参照します。私は最初有効な構成に参加したいクエリ内の各アイテムの 。は、私は正しい方法で、次のクエリを記述することはできません

var query = someLinqQuery; 

var res = (from item in query 
       join sub in 
       (
         from confs in db.ConfigurationsTable 
         where confs.t_date_start_val <= item.date && confs.t_date_end_val >= item.date 
         select new{ .. } 
         // First 
       ) on item.t_id equals sub.t_id into 
      select c); 

項目サブクエリ内部見えません。 サブクエリの最初の項目だけをどのように取ることができますか?

+0

を得ていますか? – Glubus

+0

@Glubus項目がサブクエリの内側に表示されていない、とも私はサブクエリから最初に取る方法がわからない – DevT

+0

はい、あなたはそれを言いました。今何*エラー*あなたが得ている?あなたがあなたのプログラムを動かそうとするとき、なぜそうではありませんか? – Glubus

答えて

0

あなたのポストでは、いくつかの誤解があります。

項目サブクエリはjoinの一部であるからであるサブクエリ

内部見えません。結合に含まれるサブクエリは独立しており、互いに見えません。いくつかのフィールドでそれらを関連付けるのは、joinの操作です。

あなたの代わりにjoinfromを使用し、その後、サブクエリからitemを見たい場合:私は、サブクエリからのみ最初の項目を取ることができる方法も

from item in query 
from sub in 
(
    // Here you can access the item 
) 

を?

することができますが、joinオペレータは2つのセットを相関されているので、あなたは、join演算子を使用することはできません。

だから、どちらかgroup joinを行い、その後、内側のセットから最初の要素を取る:

from item in query 
join sub in (...) on item.t_id equals sub.t_id into subs 
let sub = subs.FirstOrDefault() 

や相関サブクエリを使用し、最初の要素を取る:あなたはどのようなエラーを

from item in query 
let sub = (from confs in db.ConfigurationsTable 
      where confs.t_date_start_val <= item.date && confs.t_date_end_val >= item.date 
       // Here is the correlation (confs field could be different) 
       && confs.t_id == item.t_id 
      select new{ .. } 
     ).FirstOrDefault() 
+0

に存在しない、私はすぐにそれをチェックします。他の2つの使い方についてはわかりません。 – DevT

関連する問題