2010-03-29 26 views

回答

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的一部分。

+0

谢谢!我感谢帮助! – 2010-03-29 16:07:13

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; 
+0

Sani,我在想OP是关心“Category”为空还是空的,而不是file.Category。如果是这样,我认为你的解决方案将排除一些应该包括的项目。 – itsmatt 2010-03-29 15:56:32

+0

你是对的...改变了...... – 2010-03-29 15:58:16