我正在研究客户决定使用记录状态的系统。其中一个是X被排除在外。我想知道的是,是否可以运行添加类似
之类的linq查询where status != 'X'
自动不显示“已排除”记录。谢谢!
答案 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")
完全相同的事情。你唯一遗漏的是双引号,因为它是一个字符串,而不是一个字符。