Linq to SQL 和外部应用

发布于 2024-11-23 20:25:57 字数 502 浏览 1 评论 0原文

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

有什么解决办法吗?

I'm trying to convert "SQL Outer Apply" to Linq.
The SQL is:

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

I have tried the following Linq but got one row, instead of row for each currency as the SQL statement gives me.

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

Any solution for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽清梦 2024-11-30 20:25:57

试试这个:

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

Try this:

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

I am not sure if this returns the correct result, because I don't know what happens, when the subselect in outer apply returns multiple rows...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文