Skip to content

Expression / LINQ layer

INFO

Expressions are the first step toward full LINQ. They power repositories, unit of work, etc. IDbBus is the main surface (similar to EF Core DbSet); a translator turns expression trees into SQL.

WARNING

Great for simple entity CRUD. For complex multi-join projections prefer SQLBuilder.

Basics

useBus

c#
DBCash.useBus<T>(0);

Count

c#
var db = DBCash.useDb<SysUserConfig>(0);
var cc = db.Count();

ToPageList

Separate page + size:

c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .Where((d) => d.uc_Key.Contains("a"))
    .SetPage(1,20)
    .ToPageList();

Combined:

c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .Where((d) => d.uc_Key.Contains("a"))
    .ToPageList(1,20);

Where

c#
var db = DBCash.useDb<SysUserConfig>(0);
var cc= db
    .Where((d) => d.uc_Idx > 1)
    .Count();

Chained:

c#
var db = DBCash.useDb<SysUserConfig>(0);
var d2 = db
    .Where((d) => d.uc_Idx > 1)
    .Where((d) => (d.uc_Key=="a" ) )
    .Take(2)
    .ToList();

AND / OR groups:

c#
var db = DBCash.useDb<SysUserConfig>(0);
var d2 = db
    .Where((d) => (p.uc_Key == "a" && p.uc_Id > 1) || (p.uc_Idx == 2 && p.uc_Created < DateTime.Now) )
    .Take(2)
    .ToList();

Single

c#
var db = DBCash.useDb<SysUserConfig>(0);
var d2 =
    from p in db
    where (p.uc_Key == "a" && p.uc_Id > 1) || (p.uc_Idx == 2 && p.uc_Created < DateTime.Now)
    select p
    ;
var dt = d2.Single();

Set + DoUpdate

c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .Set((d)=>d.uc_Note,"a")
    .Where((d)=>d.uc_Key=="a")
    .DoUpdate();

InjectSQL

c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .Where((d) => d.uc_Key == "a")
    .InjectSQL((kit, context) => {
        kit.where("1=1");
    })
    .Count();

Like

c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .Where((d) => d.uc_Key.Like("a"))
    .Where((d) => d.uc_Title.LikeLeft("b"))
    .Count();

Joins

c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .LeftJoin<HHDutyItem>((a,b)=>a.uc_Key==b.HH_DutyItemOID)
    .Where((d) => d.uc_Key.Contains("a"))
    .Count();
c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .RightJoin<HHDutyItem>((a,b)=>a.uc_Key==b.HH_DutyItemOID)
    .Where((d) => d.uc_Key.Contains("a"))
    .Count();
c#
var db = DBCash.useDb<SysUserConfig>(0);
var dt = db
    .InnerJoin<HHDutyItem>((a,b)=>a.uc_Key==b.HH_DutyItemOID)
    .Where((d) => d.uc_Key.Contains("a"))
    .Count();