根据主键 Id 查询
T model = ORM.Get<T>(tblDemo.Id);
根据 Lambda 表达式查询
List<T> list = ORM.Get<T>(
it => it.Where(o => o.Mark > 0).OrderBy(o => o.CreateDate));
Lambda - In 条件:where Id in (3, 5, 10)
// 用法 1:string[]
string[] ids = new string[] { "3", "5", "10" };
List<T> list = ORM.Get<T>(it => it.Where(o => o.Id.In(ids)));
// 用法 2:List<int>
List<int> listIds = new List<int> { 3, 5, 10 };
List<T> list = ORM.Get<T>(it => it.Where(o => o.Id.In(listIds)));
// 用法 3:直接传值
List<T> list = ORM.Get<T>(it => it.Where(o => o.Id.In(1, 2, 3, 5, 6)));
按条件动态拼接
var expc = new AiExpConditions<tblORMTest>();
if (string.IsNullOrEmpty(name) == false)
expc.Add(it => it.Where(o => o.String1 == name));
expc.Add(it => it.Where(o => o.Mark > 0).OrderByDescending(o => o.InsertTime));
ORM.Get(expc);
智能动态拼接(3.2.0.3+)
为减少代码级别的"是否拼接"判断,框架提供 5 个智能扩展方法:
DynamicIn、DynamicLike、DynamicEquals、DynamicGreaterThan、DynamicLessThan。
传入值为 null 时自动忽略对应条件。
DynamicIn — 与 In 类似:where Mobile in ('111','222','333')
ORM.Get<T>(it => it.Where(o => o.Mobile.DynamicIn("111,222,333")));
DynamicLike — 与 Like 类似:where Mobile like '%13666666666%'
ORM.Get<T>(it => it.Where(o => o.Mobile.DynamicLike("13666666666")));
DynamicEquals — 与 = 类似:where Mobile = '13666666666'
ORM.Get<T>(it => it.Where(o => o.Mobile.DynamicEquals("13666666666")));
DynamicGreaterThan — 与 > 类似
- != null:
where Mark > 0 and Age > 20
- == null:
where Mark > 0
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Age.DynamicGreaterThan(20)));
DynamicLessThan — 与 < 类似
- != null:
where Mark > 0 and Age < 20
- == null:
where Mark > 0
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Age.DynamicLessThan(20)));
Lambda - Like 条件
List<T> list = ORM.Get<T>(it => it.Where(o => o.Id.Like("abc%")));
SQL 条件查询(参数化)
写法 1:
List<T> list = ORM.GetWhere<T>(
"where ClassID = @ClassID and Mark > 0",
"order by CreateDate",
new { ClassID = "1" });
写法 2:
var paramList = new List<MKeyValue>();
paramList.Add("@ClassID", "1");
List<T> list = ORM.GetWhere<T>(
"where ClassID = @ClassID and Mark > 0",
"order by CreateDate",
paramList);