0

我想从下拉列表中将有效的 id 或 -1("ALL") 传递给函数。我可以使用单个 linq 查询从表中根据从 ddl 中选择的选项选择“所有”行或一行吗?

4

2 回答 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 回答