[英]LINQ join in lambda with most recent date
我正在嘗試對表'Personen'進行linq查詢,並聯接表'Leners'。
從“ Leners”表中,我需要最新的商品(如果有)。
在SQL中,我會這樣:
select p.*, l.*
from dbo.Personen p
left outer join dbo.Leners l on l.LenerId =
(select top 1 LenerId
from dbo.Leners lt
where lt.PersoonId = p.PersoonId
order by lt.Vanaf desc)
我如何用linq做到這一點? 我想在lambda表達式中執行此操作,因為它取決於選擇。
using (var db = new DbContext())
{
var query = from p in db.Personen
select p;
if (someSelection != null)
{
query = ?
}
}
這些表是:(首先是EF代碼)
[Table("Personen")]
public class Persoon
{
[Key]
public int PersoonId { get; set; }
[StringLength(50)]
[Required]
public string Naam { get; set; }
}
[Table("Leners")]
public class Lener
{
public int LenerId { get; set; }
public int? PersoonId { get; set; }
[ForeignKey("PersoonId")]
public virtual Persoon Persoon { get; set; }
public DateTime Vanaf { get; set; }
}
您的LINQ查詢應如下所示:
var query2 = from p in dbo.Personen
let l = dbo.Leneren
.OrderByDescending(lt => lt.Vanaf)
.FirstOrDefault(lt => lt.PersoonId == p.PersoonId)
select new { p, l }
但是,您不能將其分配回query
變量!
var query = from p in db.Personen
select p;
query
為IQueryable<Person>
因為您在此處選擇“ Person
項。 您不能將其重新分配為IQueryable<AnotherType>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.