是否可以在Linq to SQL中使用自动过滤器?

时间:2010-09-20 23:58:08

标签: c# linq linq-to-sql linq-to-entities

我正在研究客户决定使用记录状态的系统。其中一个是X被排除在外。我想知道的是,是否可以运行添加类似

之类的linq查询
where status != 'X'

自动不显示“已排除”记录。谢谢!

3 个答案:

答案 0 :(得分:5)

排序。 Linq中的查询是经过延迟评估的,因此您可以在实际获取第一个结果之前为它们添加条件,它仍然会导致使用“最佳”SQL。

例如:

// an extension method on the LINQ context:
public static IQueryable<Story> FilteredStories(this DbContext db)
{
    return from story in db.Stories where status != "X" select story;
}

// ...later...
var stories = from story in db.FilteredStories()
              where title = "Something"
              select story;
foreach(var story in stories)
{
    // whatever...
}

您还可以“隐藏”基础LINQ上下文,并始终通过附加status != "X"条件的包装类。当然,那么问题就是如果你没有想要一个过滤的列表那么你必须跳过箍...

答案 1 :(得分:0)

你可能追求的是Dynamic LINQ。它是一个帮助程序库,可用于从字符串中解析LINQ表达式。

答案 2 :(得分:0)

LINQ非常简单,写下这个问题几乎可以给你答案!

where status != "X" 

我的偏好是

.Where(record => record.status != "X")

完全相同的事情。你唯一遗漏的是双引号,因为它是一个字符串,而不是一个字符。