链字符串表达linq

时间:2015-03-26 15:07:34

标签: sql linq

在传统的sql中,我们可以根据if语句链接表达式。

例如,假设我有变量名为" firstName"我希望根据此变量中的值从数据库中获取所有用户(如果为空,则获取所有用户)

所以我将链接像那个

的sql字符串
string sql="";
if(firstname!="")
sql=String.format(" And firstname='{0}',firstName)

.ExecuteReader(System.Data.CommandType.Text,"select * from users where 1=1" + sql)

有没有办法将此技术复制到linq表达式?

类似

from U in user
where 1=1 & sql
select U

1 个答案:

答案 0 :(得分:4)

更改为方法语法而不是查询语法,链接很容易。

var query = user.Select(u => u);  
if(firstname!="")
    query = query.Where(u => u.firstname = firstname);
查询语法中的

查询是在编译时转换的,因此没有一种机制可以在运行时使用查询语法“注入”sql。