我正在尝试返回对象列表,但仅包含该对象的一个属性的子集。控制器[ServiceFilter(typeof(LogUserActivity))]public class CabinsController : Controller{ private readonly IBaseRepository _repo; public CabinsController(IBaseRepository repo) { _repo = repo; } public IActionResult GetCabins() { return Ok(_repo.GetCabins()); // upon completing the action, the LogUserActivity // filter saves changes to the database. }}存储库public List<Cabin> GetCabins() { // retrieve list of all cabins var cabins = _context.Cabins.ToList(); // only show current occupants of the cabins foreach (var cabin in cabins) { cabin.occupants = cabin.occupants.Where(o => o.StartDate <= DateTime.UtcNow && o.EndDate >= DateTime.UtcNow).ToList(); } return cabins;}但是,这_context和它所连接的数据库正在发生变化。它正在删除所有occupants不是最新的。如何在不更改数据源的情况下检索对象属性的子集?
2 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
在小屋对象上使用 .toList() 将创建一个副本以在循环中使用:
foreach (var cabin in cabins.toList()) {
请参阅ToList()——它是否创建一个新列表?了解更多信息。
桃花长相依
TA贡献1860条经验 获得超8个赞
分配后
var cabins = _context.Cabins.ToList();
您在 _context 数据对象中分配新的占用者。后来,如果你写
_context.SaveChanges();
它节省了数据库。试试这个
public List<Cabin> GetCabins()
{
// retrieve list of all cabins
var cabins = _context.Cabins.ToList();
List<Cabins> cabintemp= new List<Cabins>();
// only show current occupants of the cabins
cabintemp.occupants=cabins.occupants.Where(o =>
o.StartDate <= DateTime.UtcNow &&
o.EndDate >= DateTime.UtcNow)
}
return cabintemp;
}
使用小屋温度。
- 2 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消