テーブル '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でこれを行うにはどうすればよいですか? 選択に依存するため、ラムダ式でこれを行いたいと思います。
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; }
}