在 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();

我创建了一个模型 class(未映射到数据库),其中包含我需要的列:

[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 {...} 将 return 一个 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 Queryable Extensions