我想将一组条件where子句附加到ObjectSet的末尾。但是,不执行子句,而是运行原始查询,例如:
using (Entities context = new Entities()){
var q = context.AuditLogs;
q.Where(o => o.WebsiteId == 1);
}
不执行where子句并返回完整的结果集,我可以使用IQueryAble,如下所示:
var q = context.AuditLogs.AsQueryable();
q = q.Where(o => o.WebsiteId == 1);
然而,这使我失去了使用.Include快速加载相关实体的能力。
发布于 2010-11-02 16:42:29
不,它不会。在执行查询之前的任何时候,你仍然可以将它转换回ObjectQuery,并调用像Include on it这样的方法:
var query = context.AuditLogs.AsQueryable();
query = query.Where(o => o.WebsiteId == 1);
var auditLog = ((ObjectQuery<AuditLog>)query).Include("yourNavPropertyName")
.ToList();
如果您打算逐步建立一个标准,那么另一种选择是通过QueryBuilder方法利用EntitySQL:
var query = context.AuditLogs.Where("it.WebsiteId = 1");
query = query.Where("...");
var auditLog = query.Include("yourNavPropertyName")
.ToList();
发布于 2010-11-02 17:00:13
这里只需要一些优秀的老式linq就足够了。假设您有一个名为SiteOwner的属性,您可以使用下面的查询完成您想要做的事情
using (Entities context = new Entities()){
var webSites = from sites in context.AuditLogs.Include("SiteOwner")
where sites.WebSiteId == 1
select sites;
}
https://stackoverflow.com/questions/4079691
复制相似问题