(一)lambd动态拼接条件,linq内链接,左链接,分组排序查询

 

1:lambd动态拼接条件

Expression<Func<T1, bool>> exp = a => 1 == 1;
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<T1> daatas = result.ToList();

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<vvt1> vtss = (from v2 in data1.GroupBy(m => new { m.t1id }).Where(m => 1 == 1).Select(g => new { til = g.Key.t1id, countfs3 = g.Sum(m => m.fs3) })
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<vvt1>();

 

posted @   yingxianqi  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示