我想从下拉列表中将有效的 id 或 -1("ALL") 传递给函数。我可以使用单个 linq 查询从表中根据从 ddl 中选择的选项选择“所有”行或一行吗?
问问题
863 次
2 回答
0
您可以在语句中添加 OR 以获得结果。基本上,(@value = -1)或(id = @value)。每当 value 为 -1 时,它将返回所有 value,否则我们为 false,只返回匹配的记录。
于 2013-05-28T16:19:34.013 回答
0
在 LINQ 中使用 OR 有时会导致全表扫描和非最佳检索。
我建议您不要在 LINQ 语句中添加条件,而是根据您想要单个结果还是“全部”有条件地构建 LINQ 查询:
// Initialize your select
var query = db.Select(r => r);
// Conditionally add the "where"
if (selectedValue != -1)
query = query.Where(n => n.id == selectedValue);
// Collect your results
foreach (var record in query)
{
// ...
}
如果您想要所有记录,那么您的查询将根本不包含 where 子句,否则,where 子句将仅包含按 id 的过滤器。
于 2013-05-28T17:39:53.107 回答