2010-10-06 90 views
0

我有一个下拉列表,当选择从数据库中拉出数据。下拉列表中有很多选项,其中一个是“全部”。我希望当用户选择“全部”选项时,它应该将所有内容从数据库中提取出来。什么是实现此功能的好方法?有条件的Linq查询

回答

7

使用LINQ你把它发送到数据库之前,你可以很容易地修改查询:

IQueryable<Item> query = dataContext.Items; 

if (selectedText != "All") 
{ 
    query = query.Where(item => item.Type == selectedText); 
} 

List<Item> result = query.ToList(); 

或者,你可以把它写在一个单一的查询:

IQueryable<Item> query = dataContext.Items 
    .Where(item => selectedText == "All" || item.Type == selectedText); 
+0

或者可能:query.Where(item => selectedText ==“All”|| item.Type == selectedText); – 2010-10-06 20:26:54

+1

@mgroves:谢谢,补充。 – 2010-10-06 20:27:16

1

检查值,只有在不是“全部”的情况下执行Where语句。

var linqQuery = ... 
if (selectedValue != "All") 
    linqQuery = linqQuery.Where(w => w.Value == selectedValue); 
0

如果你是动态构建您的查询很多,那么您可能需要查看一个非常酷的Linq示例,即“动态Linq库”。 Scott Guthrie对此有个不错的blog post

编辑:请注意,在这种特定情况下,因为您位于where子句的右侧,所以您不需要完全动态化,这将会矫枉过正,但是如果您有一种情况需要动态过滤,然后.....