[英]How can I compose this LINQ expression?
我正在創建一個 web 應用程序來管理飛行學校,並且我具有以下數據庫結構(不相關的表格已被模糊,相關表格已被翻譯成英文以清楚起見):
我有一個表格截止日期,其中存儲與飛機相關的所有截止日期。 此表鏈接到Aircrafts表。 然后我有一個OwnedAircrafts表,其中存儲了飛機和人員的 ID(因為一個人可以擁有幾架飛機或其中的一部分)。
我的問題是:
給定一個人的 id,我如何檢索與他/她的飛機相關的截止日期列表? (最好使用方法語法)
換句話說:
下面的代碼現在返回所有飛機的最后期限,無論所有者是誰。 如何參考OwnedAircrafts表以僅過濾與personId相關的截止日期?
IEnumerable<DeadlineViewModel> GetDeadlinesOfAPerson(long personId)
{
return _context.Deadlines
.Select(deadline => new DeadlineViewModel
{
Id = deadline.Id,
Aircraft = deadline.Aircraft,
Model = deadline.AircraftsNavigation.Model,
IdDeadlineType = deadline.DeadlineType,
DeadlineType = deadline.DeadlineTypesNavigation.Description
// other fields...
});
先感謝您!
嘗試以下操作:
IEnumerable<DeadlineViewModel> GetDeadlinesOfAPerson(long personId)
{
return _context.Deadlines
.Where(x => x.deadline.ID == 12345)
.Select(deadline => new DeadlineViewModel
{
Id = deadline.Id,
Aircraft = deadline.Aircraft,
Model = deadline.AircraftsNavigation.Model,
IdDeadlineType = deadline.DeadlineType,
DeadlineType = deadline.DeadlineTypesNavigation.Description
// other fields...
});
遵循這種方法:
IEnumerable<DeadlineViewModel> GetDeadlinesOfAPerson(long personId)
{
return _context
.OwnedAircarfs
.Where( s => s.Persona == YourPersonId)
.Includes(s=> s.AirCrafts)
.ThenIncludes(s=> s.Deadlines)
.Select(deadline => new DeadlineViewModel
{
//use navigation properties to get value of related tables
// other fields...
}).ToList();
您可以將導航屬性添加到您的實體,然后嘗試這樣的事情:
var user = _context.Users
.Include(user => user.OwnedAircrafts)
.ThenInclude(ownedAircraft => ownedAircraft.Aircraft)
.ThenInclude(aircraft => aircraft.Deadlines)
.FirstOrDefault(user => user.Id == userId)
return user.OwnedAircrafts
.SelectMany(ownedAircraft => ownedAircraft.Aircraft.Deadlines);
您不需要查詢 Persons 表,因為OwendAircrafts
中提供了人員 ID
IEnumerable<DeadlineViewModel> GetDeadlinesOfAPerson(long personId)
{
return _context.Deadlines
.Where(deadline =>
deadline.Aircraft.OwnedAircrafts.Any(oa => oa.persona == personId))
.Select(deadline => new DeadlineViewModel
{
Id = deadline.Id,
Aircraft = deadline.Aircraft,
Model = deadline.AircraftsNavigation.Model,
IdDeadlineType = deadline.DeadlineType,
DeadlineType = deadline.DeadlineTypesNavigation.Description
// other fields...
});
}
這假設您在Aircraft
中有一個導航屬性OwnedAircrafts
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.