我在控制器端使用 EF 構建了一個連接查詢。
如何將我需要的列從控制器傳遞到視圖?
我的查詢是:
var unretObj = _unitOfWork.CartsTransaction.GetUnreturnedCarts(branchId, compId)
.Join(_unitOfWork.ApplicationUser.GetAll(),
ct => ct.UserId,
au => au.UserId,
(ct, au) => new { ct, au })
.Join(_unitOfWork.Lock.GetAll(),
ctau => ctau.ct.CartMacId,
l => l.MacId,
(ctau, l) => new { ctau,l })
.Select(result => new
{
result.ctau.ct.UnlockTime,
result.l.LockIdByComp,
result.ctau.au.FullName,
result.ctau.au.PhoneNumber
}).ToList();
我創建了一個模型類(未映射到資料庫),其中包含我需要的列:
[NotMapped]
public class UnreturnedLocks
{
public DateTime UnlockTime { get; set; }
public int LockNumber { get; set; }
public string FullName { get; set; }
public string PhoneNumber { get; set; }
}
如何將物件轉換unretObj為 anIEnumerable<UnreturnedLocks>以便將其傳遞給視圖?
還是有另一種方法可以在視圖中使用通用物件而不轉換它?
uj5u.com熱心網友回復:
.Select(result => new {...}將回傳一個IQueriable匿名物件,然后您需要將它們轉換為IEnumerable<UnreturnedLocks>:
...
.Select(result => new
{
result.ctau.ct.UnlockTime,
result.l.LockIdByComp,
result.ctau.au.FullName,
result.ctau.au.PhoneNumber
})
.AsEnumerable()
.Select(res => new UnreturnedLocks
{
UnlockTime = res.UnlockTime
....
})
.ToList();
或者,您可以使用Automapper 可查詢擴展
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/483898.html
標籤:C# asp.net 核心 asp.net-core-mvc
