(一)lambd动态拼接条件,linq内链接,左链接,分组排序查询
1:lambd动态拼接条件
Expression
exp = exp.And(s => s.no1 == "22");
exp = exp.And(s => s.fs == 3);
exp = exp.And(s => s.name.Contains("fff"));
var result = data.Where(exp);
string res = result.ToQueryString();//打印sql语句
List
2:内链接查询分页
var uniondata = from v1 in data
join v2 in data1 on v1.id equals v2.t1id
join v3 in data2 on v2.id equals v3.t3id
where v3.name4.Contains("444")
orderby v3.sort descending
select new { v1id = v1.id, v1name = v1.name, v2name = v2.name1, v3name = v3.name4 };
var pagedata = uniondata.Skip(0).Take(5).ToList();
3:左链接查询
IQueryable uniondata1 = from v1 in data
join v2 in data1 on v1.id equals v2.t1id into newtable//查询结果放到newtable变量里面
from ur in newtable.DefaultIfEmpty()//左链接
where v1.name.Equals("11111")
select new { v1id = v1.id, v1name = v1.name, v2name = ur.name1 };
string result = uniondata1.ToQueryString();//打印sql语句
3:分组查询
List
join v1 in data on v2.til equals v1.id
where 1 == 1
orderby v2.countfs3 descending
select new vvt1() { id = v1.id, name = v1.name, fs3 = v2.countfs3, t1id = v2.til }).ToList