Linq для SQL и внешнего применения - PullRequest
1 голос
/ 14 июля 2011

Я пытаюсь преобразовать «SQL Outer Apply» в Linq.SQL:

select Currencies.Name, Currencies.Sign ,a.ActualPrice 
from Currencies 
outer apply (select CurrencyID,ActualPrice from Prices 
where ProductID=5 and      Currencies.ID=Prices.CurrencyID)a

Я попробовал следующий Linq, но получил по одной строке вместо строки для каждой валюты, как дает мне инструкция SQL.

from c in Currencies 
from p in Prices.DefaultIfEmpty()
where p.ProductID.Equals(5) && c.ID==p.CurrencyID
select new {c.Name, p.ActualPrice}

Любое решение для этого

1 Ответ

0 голосов
/ 14 июля 2011

Попробуйте это:

var result = 
    Currencies.Select(c => new
                      {
                          Name = c.Name, 
                          Sign = c.Sign, 
                          ActualPrice = Prices.Where(p => p.ProductID == 5 && 
                                                          p.CurrencyID == c.ID)
                                              .FirstOrDefault()
                      });

Я не уверен, что это верный результат, потому что я не знаю, что происходит, когда подвыбор в outer apply возвращает несколько строк ...

...