1 回答
TA贡献1827条经验 获得超9个赞
除非您明确看到性能问题,否则我不会太担心 EF 生成的 SQL。数据库引擎非常擅长自我优化。
不过,要回答您的问题,这应该可行:
var query = _context.Submodules.Where(t => t.Id == id)
.Select(e => new {
Id = e.Id,
Name = e.Name,
Status = e.Status,
Token = e.Token,
ModuleId = e.ModuleId,
Gender = e.Gender,
TotalRows = e.TotalRows,
TotalWords = e.TotalWords,
ComletedSegments = e.Segments
.Where(a => a.Status == Abr.Recorded)
.Select(y => new { y.Wordcount })
.ToList()
}).ToList()
.Select(e => new Submodules{
Id = e.Id,
Name = e.Name,
Status = e.Status,
Token = e.Token,
ModuleId = e.ModuleId,
Gender = e.Gender,
TotalRows = e.TotalRows,
TotalWords = e.TotalWords,
CompletedWords = e.Sum(y=> y.Wordcount),
CompletedRows = e.Count()
}).ToList();
第一个查询选择匿名类型以从适用的已完成片段中选择字数。实现这ToList()一点并执行查询。对于您可以省略的段,.Select()虽然这会将所选数据减少到我们关心的列。
第二个.Select()通过对段求和和计数来填充视图模型。
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报