我想将一个有效的id或-1(“ALL”)从下拉列表传递给函数。 我可以根据使用单个linq查询从表中的ddl中选择的选项选择“所有”行还是一行?
答案 0 :(得分:0)
您可以在语句中添加OR以获取结果。基本上,(@ value = -1)OR(id = @value)。每当value为-1时,它将返回所有值,否则我们将返回false并仅返回匹配记录。
答案 1 :(得分: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的过滤器。