是否可以使用字符串作为 LINQ 查询表达式?
如果某些变量具有某些值,我需要提取一些记录。
例如,如果 status>0 我需要像这样过滤结果:
where object.id=status
否则,如果 status=0,我需要删除此 where 子句并返回所有元素。我将摆脱:
if(status>0)
do a linq query with the where clauses
else
do a link query with that where clauses
太多的代码,因为要检查的变量可能超过 4-5 个。
是否可以在 LINQ 上“注入”某种字符串? (这样我就可以创建字符串并将其传递给 LINQ)。
我的意思是:
string myQuery="";
if(status>0)
myQuery="where object.id=status";
else
myQuery="";
有可能吗? (经典的 mysql 行为)。
I need to extract some records if some variables have some values.
For example, if status>0 I need to filter result like :
where object.id=status
else, if status=0, I need to remove this where clauses and return all elements. I'll get rid about :
if(status>0)
do a linq query with the where clauses
else
do a link query with that where clauses
too much code, because the variables to check could be more than 4-5.
Is it possible to "inject" a sort of string on LINQ? (So i can create my string and pass it to the LINQ).
I mean somethings like :
string myQuery="";
if(status>0)
myQuery="where object.id=status";
else
myQuery="";
is it possible? (Classic mysql behaviour).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
由于 LINQ 很懒,所以你可以这样做
Since LINQ is lazy, you can just do
您可以建立这样的查询:
这有帮助吗?
You can build up a query like this:
Does that help?
可以使用动态 LINQ,请参阅 ScottGu 的博客文章:
动态 LINQ(第 1 部分:使用 LINQ 动态查询库)
It is possible using Dynamic LINQ, see ScottGu's blog post:
Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)
您可以这样做:
Linq(到 sql 和 EF)足够智能,可以合并 where 条件并将一个 SQL 语句发送到数据库。
You could do it like this:
Linq (to sql and EF) is smart enough to merge the where conditions and send one SQL statement to the database.
可以使用动态 linq - 请参阅如何从字符串创建 LINQ 查询?
我的答案链接到 Scott Gu 的帖子和 Microsoft 的示例代码 - http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
It is possible using dynamic linq - see How to create LINQ Query from string?
My answer there links to Scott Gu's posts and the sample code from Microsoft - http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
AFAIK,您将需要有两个不同的查询。
AFAIK, you will need to have 2 different queries.
另一种选择:
query.Where(x=>(status>0? x.id==status : 1==1))
Another option:
query.Where(x=>(status>0? x.id==status : 1==1))
您是否正在尝试执行条件 LINQ 查询?如果是这样也许这会有所帮助
Are you attempting to do a conditional LINQ query? if so maybe this would help
您可以编写以下内容
但是,您想要查询所有实体,您可以随后使用 LINQ to SQL 在内存中进行过滤
You can write the following
However, you you want to query all entities, you can filter in memory afterwards using LINQ to SQL