1

我正在尝试将“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}

有什么解决办法吗?

4

1 回答 1

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返回多行时会发生什么......

于 2011-07-14T08:19:01.363 回答