c# - 从实体框架中提取列表列表
问题描述
说,我定义了以下实体:
public class User : IdentityUser
{
public virtual string Name { get; set; }
public virtual string Surname { get; set; }
public virtual List<Entry> Entries { get; set; }
}
public class Entry
{
[Key]
public virtual int Id { get; set; }
public virtual string UserId { get; set; }
public virtual User User { get; set; }
public virtual long Timestamp { get; set; }
public virtual string Comment { get; set; }
}
我想检索:
- 所有用户的列表
- 每个用户的条目列表(如果用户没有条目,则列表为空)
- 条目的时间戳在值 X 和 Y 之间
显然我可以自己转储用户和条目表并组织数据,但这将非常低效。有没有办法使用实体框架查询生成这样的结果?
解决方案
不幸的是,您无法过滤Include
表达式,因此您必须创建一个投影 - 如果没有那么多属性,它不会太乏味。
var users = from user in context.Users
select new User {
Name = user.Name,
Surname = user.Surname,
Entries = user.Entries.Where(u => u.Timestamp > X && u.Timestamp < Y).ToList()
}
推荐阅读
- arduino - 在没有以太网屏蔽的情况下将数据从 arduino 发送到 sql server
- javascript - 处理 JS 计算的 CSS 值而不使用内联或嵌入样式
- c++ - 单独库中的类成员函数定义,以及链接依赖项
- php - WordPress 在 404 错误页面上显示每个帖子
- symfony4 - 编码明文 Symfony 4
- javascript - 如何解决下拉长度问题
- javascript - jQuery从json中获取total
- c# - XML 中的最大日期时间
- python - 如何在 python 窗口中显示和管理 HTML
- jquery - 如何安排延迟 5 秒发送 ajax 请求?