のJOIN生産これは、このLINQクエリを形成するための最良の方法であるかどうかは知らないが、私はただのアドバイスは歓迎ですので、始めますよ。LINQのLEFT OUTERは
私は「アイテムサイジング属性のwaisteサイズプロパティが32である任意のattibutesを持っている任意の項目を持つレポート」を言うと思います次のクエリレポートのロケーションキー、ID、および名前を返します。 (場所は、レポートの外部キーです)
これは、望ましい結果をもたらしますが、SQLは私には当てはまりません。 ... LEFT OUTERはそれだけで最初INNERからそれを得ていることができるとき、同じテーブルにJOINを、場所の名前を取得するには、JOIN時間
SELECT [Extent1].[ReportKey] AS [ReportKey],
[Extent2].[LocationID] AS [LocationID],
[Extent3].[LocationName] AS [LocationName]
FROM [Info].[Report] AS [Extent1]
INNER JOIN [Info].[Location] AS [Extent2]
ON [Extent1].[LocationKey] = [Extent2].[LocationKey]
LEFT OUTER JOIN [Info].[Location] AS [Extent3]
ON [Extent1].[LocationKey] = [Extent3].[LocationKey]
WHERE EXISTS
(SELECT 1 AS [C1]
FROM (SELECT [Extent4].[ReportItemKey] AS [ReportItemKey]
FROM [Info].[ReportItems] AS [Extent4]
WHERE [Extent1].[ReportKey] = [Extent4].[ReportKey]
) AS [Project1]
WHERE EXISTS (SELECT 1 AS [C1]
FROM [Info].[ItemAttributes] AS [Extent5]
INNER JOIN [Info].[Attributes] AS [Extent6]
ON [Extent5].[AttributeKey] = [Extent6].[AttributeKey]
WHERE ([Project1].[ReportItemKey] = [Extent5].[ReportItemKey])
AND ([Extent6].[WaistSize] = @p__linq__0)
)
)
感謝を注意してください。