我有以下代码。当我不给参数“当前”和“版本”,所以它只运行第一行,最后的lstFile变量包含文件及其相关作业。如果给出“当前”参数或“版本”参数,文件将返回而不包含相关的作业。但是,由于我在第一步中包含了乔布斯,为什么相关的乔布斯在这个过程中会丢失?LINQ包含通过参数时不包含相关实体
顺便说一下,延迟加载是关闭的,这就是为什么我需要做的包括。
IQueryable<File> filteredFiles = entities.Files.Include("Jobs");
if (!String.IsNullOrWhiteSpace(current))
{
bool bActive = current == "1" ? true : false;
filteredFiles =
from f in filteredFiles
join j in entities.Jobs
on f.IDFile equals j.IDFile
where j.Active == bActive
select f;
}
if (!String.IsNullOrWhiteSpace(version))
{
filteredFiles =
from f in filteredFiles
join j in entities.Jobs
on f.IDFile equals j.IDFile
where j.Version == version
select f;
}
List<File> lstFile = filteredFiles.Distinct().ToList();
您是否尝试添加include _after_这两个'if'块? – 2014-09-29 18:46:06
它不能完成,因为Include函数只能直接从entities.Files集合中获得。在这之后,我正在使用一个没有此功能的IQueryable集合。 – 2014-09-29 18:51:27
'IQueryable'上还有一个扩展方法吗? http://msdn.microsoft.com/en-us/library/dn220202(v=vs.113).aspx –
2014-09-29 18:58:13