我正在努力寻找解决此问题的最有效方法:
我正在从数据库中检索文件。如果FileSize小于10MB,我想包含FileContent,否则将保留为null。我现在的代码是:
var z = QuerySet.AsQueryable();
File f = z.FirstOrDefault(item => item.Id == id && item.FileSize >= 1024 * 1024 * 10);
if (f != null) return f;
return z.Include(a => a.FileContent)
.FirstOrDefault(item => item.Id == id);
所以,我查询是否是我的文件(匹配的Id)以及它是否是一个大文件。如果是这样,请返回该文件。否则再次执行查询,但包括文件内容。有没有更有效的方法来实现这一目标?
答案 0 :(得分:3)
怎么样:
var item = z.Select(x => new {
File = x,
Content = x.FileSize >= sizeLimit ? null : x.FileContent
}).FirstOrDefault(x => x.File.Id == id);
return item.File;
应该成功,但你必须通过查看生成的SQL来确认。