有时候在执行一个赋值一点的sql要动态生成用lamdba来写很不方便,新版本用动态生成表达式树的方式也不怎么行了...
需要时间去慢慢研究,我们也可以尝试选择使用原生的sql方法。可以使用FromSqlRaw 或FromSqlInterpolated
一个简单的动态拼接or条件的例子://动态构建sql语句
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("select * from Article where userid=@userid and IsXX!=1 and (");
List sqlParameters = new List();
sqlParameters.Add(new SqlParameter("userid", userid));
for (int i = 0; i
{
stringBuilder.Append(" Title like @key" + i);
if (i != _keywords.Count - 1)
{
stringBuilder.Append(" or ");//不是最后一个说明还有条件需要链接一个or
}
sqlParameters.Add(new SqlParameter("key" + i, "%" + _keywords[i] + "%"));
}
stringBuilder.Append(" ) ");
var queryable = context.Article.FromSqlRaw(stringBuilder.ToString(), sqlParameters.ToArray()).ToList();
未完待续,先简单记录一下
欢迎加群讨论技术,群号:677373950