只有当queryable类型转成其它类型时才会执行数据操作
条件拼接
var queryable2 = db.Queryable<Student>().Where(it => true); if (maxId.ObjToInt() == 1) { queryable2.Where(it => it.id == 1); } else { queryable2.Where(it => it.id == 2); } var list = queryable2.ToList();
分页的例子
var queryable = db.Queryable<Student>() .JoinTable<School>((s1, s2) => s1.sch_id == s2.id) .JoinTable(childTableName, "a1", "a1.id=s2.areaid", new { id = 1 }, JoinType.INNER) .OrderBy(s1 => s1.id);
使用上面的queryable
var list = queryable .Select<School, Area, V_Student> ((s1, s2, a1) => new V_Student { id = s1.id, name = s1.name, SchoolName = s2.name, AreaName = a1.name }) .ToPageList(0, 200);
使用上面的queryable
var count = queryable.Count();
注意:
queryable在作为变量拼接的时候不要加入select
错误写法 var queryable=db.Queryable<T>().select("id,name"); list=queryable.ToList();
正确写法 var queryable=db.Queryable<T>(); list=queryable.select("id,name").ToList();
无参数:
string sql = db.Queryable<Student>().ToSql().Key + " union all " + db.Queryable<Student>().ToSql().Key; var student = db.SqlQuery<Student>(sql);
有参数:
有参数的情况需要注意拉姆达生成的参数例如 id会变成@id+101 name会变成@name101
string sql = db.Queryable<Student>().Where(it=>it.id==id).ToSql().Key + " union all " + db.Queryable<Student>().ToSql().Key; var student = db.SqlQuery<Student>(sql, new {id101=id });
如果是 where(it=>it.id>id&&it.x<id)这种情况会生成两个id参数 @id101 和 @id201
2016 © CodeIsBug.comApache Licence 2.0