2009-08-04 6 views
0

私はこれまでLINQでこのクエリを "翻訳"するために数日間努力してきました。あなたは私を助けてくれますか?私は実際にそれから何かを学ぶためにいくつかの説明に感謝します。linqのサブクエリ

ここ

は、T-SQLクエリです:

SELECT R.ResourceID, R.DefaultValue 
FROM Resources as R 
JOIN 
    (SELECT [t0].[NameResourceID] AS [ResourceID] 
    FROM [dbo].[Sectors] AS [t0] 
    LEFT OUTER JOIN [dbo].[LocalizedResources] AS [t1] ON [t0].[NameResourceID] = [t1].[ResourceID] and [t1].[LanguageID] = 2 
    WHERE t1.Value IS NULL) AS subQ 

ON R.ResourceID = subQ.ResourceID 

感謝の

+0

を...あなたがしていますそこから単一の価値を引っ張ってはいけません。これはWHERE句でなければなりません。なぜなら、あなたがやっているのはそれをフィルタリングするためです。それはおそらくあなたがそれを翻訳するのに苦労している理由です。 –

+0

私が必要とするのは、サブQからのエントリのIDです。確かに、私はそれをフィルタリングのためだけに使用します。私はもっ​​と良い解決策を見つけることができませんでした。何か提案はありますか? 言語Xでローカライズされていないリソースをすべて見つけようとしていて、その中にセクタがあるかどうかを確認しようとしています。 –

答えて

0

はそのような何か試してみてください:なぜあなたはそのサブQに "結合" されている

from r in db.Resources 
join subQ in (from t0 in db.Sectors 
       join t1 in db.LocalizedResources on t0.NameResourceID equals t1.ResourceID 
       where t1.LanguageId 
       && t1.Value == null 
       select new { ResourceID = t0.NameResourceID }) on r.ResourceID equals subQ.ResourceID 
select new { r.ResourceId, r.DefaultValue }; 
+0

残念ながら、これは動作しません。 [DBO]の[資源] AS SELECT [T0] [のResourceID]、[T0] [のDefaultValue] [T0] INNERが \t([DBO] [セクターのJOIN:。。。それはにTSQLで翻訳を取得します。 AS [t1]。[NameResourceID] = [t2]。[ResourceID] ON [t0]。[ResourceID] = [t1]。[AS1] [AS2] NameResourceID] WHERE 0 = 1 私はそれを修正しようとしましたが、それ以上は改善できませんでした。 –

関連する問題