【发布时间】:2020-09-24 15:14:45
【问题描述】:
我正在使用Entity Framework Core 3.1.4。我的模型就像-
public class Review
{
[Key, Required]
public Guid Id { get; set; }
public int Rating { get; set; }
public DateTime WatchDate { get; set; }
public virtual Guid UserId { get; set; }
public virtual User User { get; set; }
}
我的控制器是这样的-
public async Task<IActionResult> Index()
{
var data = await _context.Reviews
.Include(r=>r.User)
.Select(r => new Review {
Id = r.Id,
WatchDate = r.WatchDate,
User = r.User,
Rating = r.Rating
})
.OrderByDescending(r => r.Rating)
.ToListAsync();
return View(data);
}
它做得很好,但是它正在像这样查询User表的所有数据(红色标记区域)-
但我只需要email,所以我喜欢从那里只选择电子邮件(黄色标记的一个)。我在上层做Select,但不能在内部元素做同样的事情。据我所知,Entity Framework 中有一种方法,例如 this。但随着版本的变化,代码无法正常工作。
谁能帮忙,我该如何完成?
如何在列表中仅包含用户电子邮件,而不包含所有数据?那么如何选择嵌套条目呢?
【问题讨论】:
-
你可以这样做。 .Select(p => new { P.User.Email }) .AsEnumerable()
-
如果 Select 不使用 Include,则 User 为空
标签: c# asp.net entity-framework asp.net-core entity-framework-core