Linq to SQL和外部适用

时间:2011-07-14 08:12:45

标签: sql linq apply outer-join

我正在尝试将“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 :(得分:0)

试试这个:

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中的子选择返回多行时,我不知道会发生什么......