条件Linq查询

时间:2010-10-06 20:20:24

标签: c# linq-to-sql

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

检查值,如果不是“全部”,则仅执行Where语句。

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

答案 2 :(得分:0)

如果您要动态构建查询,那么您可能需要查看一个非常酷的Linq示例,“Dynamic Linq库”。关于它,Scott Guthrie有一个很好的blog post

编辑:请注意,在这个特定情况下,因为你在where子句的右侧,你不需要完全动态,这可能是过度的,但如果你有一个动态过滤的情况,然后.....