簡體   English   中英

在 ASP.NET Core 中將列表對象轉換為 IEnumerable<>

[英]Convert list object to IEnumerable<> in ASP.NET Core

我在控制器端使用 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轉換為IEnumerable<UnreturnedLocks>以便將其傳遞給視圖?

還是有另一種方法可以在視圖中使用通用對象而不轉換它?

.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 可查詢擴展

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM