使用单个linq查询选择单个或多个记录

时间:2013-05-28 16:14:50

标签: asp.net linq entity-framework drop-down-menu

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

2 个答案:

答案 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的过滤器。