是否可以在Linq to SQL中使用自动过滤器?
我正在研究客户决定使用记录状态的系统。其中之一是排除在外的X.我想知道的是,如果有可能运行linq查询,增加类似是否可以在Linq to SQL中使用自动过滤器?
where status != 'X'
自动不显示“排除”记录。谢谢 !
排序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"
条件的包装类。当然,那么问题是,那么你不得不跳过如果你没有想要一个过滤列表...
你可能会在之后是Dynamic LINQ。这是一个帮助程序库,可以用来从字符串中分析LINQ表达式。
我不明白这是如何相关的,这是非常简单的使用Where操作符。 – 2010-09-21 00:49:55
我认为这个问题更多的是要求如何使用LINQ where子句,错误地认为:)。如果OP的客户想要开始定义更多规则,包括以A,B或C等开头,那么动态LINQ将变得有用。 – sipwiz 2010-09-21 01:13:17
LINQ是如此容易,写的问题实际上给你的答案!
where status != "X"
我更倾向于将
.Where(record => record.status != "X")
这不完全是一回事。你错过的唯一的东西是双引号,因为它是一个字符串,而不是字符。
你可能想要在扩展方法上使用公共静态 – 2010-09-21 00:48:04
@Matt:对,谢谢。 – 2010-09-21 02:17:22