如果我有这样的查询:
String Category = HttpContext.Current.Request.QueryString["Product"].ToString();
IQueryable<ItemFile> pressReleases = from file in connection.ItemFile
where file.Type_ID == 8
&& file.Category == Category
select file;
有没有办法制作这个LINQ查询,这样如果Category为null或为空,我就不会使用行file.Category == Category
?
答案 0 :(得分:3)
除非您需要,否则不要添加where
?
IQueryable<ItemFile> pressReleases = from file in connection.ItemFile
where file.Type_ID == 8
select file;
if(!string.IsNullOrEmpty(Category)) {
pressReleases = pressReleases.Where(file => file.Category == Category);
}
这是有效的,因为LINQ查询可以与延迟执行组合,因此这个过滤器仍然是最终TSQL的一部分。
答案 1 :(得分:2)
这可能不是您想要的,但会呈现相同的结果:
String Category = HttpContext.Current.Request.QueryString["Product"].ToString();
IQueryable<ItemFile> pressReleases = from file in connection.ItemFile
where file.Type_ID == 8
&& (string.IsNullOrEmpty(Category) || file.Category == Category)
select file;