(一)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>();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现