我有一个下拉列表,在选中时会从数据库中提取数据。下拉列表中有许多选项,其中一个是“全部”。我希望当用户选择“全部”选项时,它应该将所有内容从数据库中拉出来。实现此功能的好方法是什么?
答案 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子句的右侧,你不需要完全动态,这可能是过度的,但如果你有一个动态过滤的情况,然后.....