这个的事情让我发疯。
我认为它并不复杂,但我不明白。
我有这个有效的SQL语句,我需要Linq语句。
select
a.id, a.date,
(select top 1 b.price from b where a.id = b.id and a.date >= b.date) as price
from a;
解释:
我有一张带有文章的表格和一张带有价格历史记录的表格。
现在我需要一个数据网格,我可以在其中输入表a的新条目(因此视图不起作用)并在保存后显示我的相关价格
我希望我可以理解地表达自己
答案 0 :(得分:3)
将SQL转换为LINQ查询理解:
FROM
子选项翻译为单独声明的变量。FULL OUTER JOIN
。查询:
var ans = from ra in a
select new {
ra.id,
ra.date,
price = (from rb in b
where ra.id == rb.id && ra.date >= rb.date
select rb.price).First()
};
答案 1 :(得分:0)
我不确定你的目标是哪种语法,但其中一种应该可以解决问题。我没有测试过它。
from xa in a
select new
{
id,
date,
price = (
from xb in b
where xa.id == xb.id && xa.date >= xb.date
select xb.price
).First() // or .FirstOrDefault() if you want to allow null prices
};
或
a.Select(xa => new
{
id,
date,
price = b.First(xb => xa.id == xb.id && xa.date >= xb.date) // or .FirstOrDefault() if you want to allow null prices
});