拉姆达表达式

article/2025/11/11 11:23:23
1、Queryable 用于拉姆达表达式操作
//---------Queryable<T>,扩展函数查询---------//
//---------Queryable<T>,扩展函数查询---------////针对单表或者视图查询//查询所有
var student = db.Queryable<Student>().ToList();
var studentDynamic = db.Queryable<Student>().ToDynamic();
var studentJson = db.Queryable<Student>().ToJson();//查询单条
var single = db.Queryable<Student>().Single(c => c.id == 1);
//查询单条没有记录返回空对象
var single2 = db.Queryable<Student>().Where(c => c.id == 1).SingleOrDefault();//查询第一条
var first = db.Queryable<Student>().Where(c => c.id == 1).First();
var first2 = db.Queryable<Student>().Where(c => c.id == 1).FirstOrDefault();//取10-20条
var page1 = db.Queryable<Student>().Where(c => c.id > 10).OrderBy(it => it.id).Skip(10).Take(20).ToList();//上一句的简化写法,同样取10-20条
var page2 = db.Queryable<Student>().Where(c => c.id > 10).OrderBy(it => it.id).ToPageList(2, 10);//查询条数
var count = db.Queryable<Student>().Where(c => c.id > 10).Count();//从第2条开始以后取所有
var skip = db.Queryable<Student>().Where(c => c.id > 10).OrderBy(it => it.id).Skip(2).ToList();//取前2条
var take = db.Queryable<Student>().Where(c => c.id > 10).OrderBy(it => it.id).Take(2).ToList();// Not like 
string conval = "a";
var notLike = db.Queryable<Student>().Where(c => !c.name.Contains(conval.ToString())).ToList();
//Like
conval = "三";
var like = db.Queryable<Student>().Where(c => c.name.Contains(conval)).ToList();// 可以在拉姆达使用 ToString和 Convert,比EF出色的地方
var convert1 = db.Queryable<Student>().Where(c => c.name == "a".ToString()).ToList();
var convert2 = db.Queryable<Student>().Where(c => c.id == Convert.ToInt32("1")).ToList();// 
var convert3 = db.Queryable<Student>().Where(c => DateTime.Now > Convert.ToDateTime("2015-1-1")).ToList();
var convert4 = db.Queryable<Student>().Where(c => DateTime.Now > DateTime.Now).ToList();//支持字符串Where 让你解决,更复杂的查询
var student12 = db.Queryable<Student>().Where(c => "a" == "a").Where("id>100").ToList();
var student13 = db.Queryable<Student>().Where(c => "a" == "a").Where("id>100 and id in( select 1)").ToList();//存在记录反回true,则否返回false
bool isAny100 = db.Queryable<Student>().Any(c => c.id == 100);
bool isAny1 = db.Queryable<Student>().Any(c => c.id == 1);//获取最大Id
object maxId = db.Queryable<Student>().Max(it => it.id);
int maxId1 = db.Queryable<Student>().Max(it => it.id).ObjToInt();//拉姆达
int maxId2 = db.Queryable<Student>().Max<Student, int>("id"); //字符串写法//获取最小
int minId1 = db.Queryable<Student>().Where(c => c.id > 0).Min(it => it.id).ObjToInt();//拉姆达
int minId2 = db.Queryable<Student>().Where(c => c.id > 0).Min<Student, int>("id");//字符串写法//order By 
var orderList = db.Queryable<Student>().OrderBy("id desc,name asc").ToList();//字符串支持多个排序
//可以多个order by表达示
var order2List = db.Queryable<Student>().OrderBy(it=>it.name).OrderBy(it => it.id, OrderByType.desc).ToList(); // order by name as ,order by id desc//In
var intArray=new []{"5", "2", "3"};
var intList = intArray.ToList();
var list0 = db.Queryable<Student>().In(it => it.id, 1,2,3).ToList();
var list1 = db.Queryable<Student>().In(it=>it.id, intArray).ToList();
var list2 = db.Queryable<Student>().In("id", intArray).ToList();
var list3 = db.Queryable<Student>().In(it => it.id, intList).ToList();
var list4 = db.Queryable<Student>().In("id", intList).ToList();//分组查询
var list7 = db.Queryable<Student>().Where(c => c.id < 20).GroupBy(it => it.sex).Select("sex,Count=count(*)").ToDynamic();
var list8 = db.Queryable<Student>().Where(c => c.id < 20).GroupBy(it => it.sex).GroupBy(it=>it.id).Select("id,sex,Count=count(*)").ToDynamic();
List<SexTotal> list9 = db.Queryable<Student>().Where(c => c.id < 20).GroupBy(it => it.sex).Select<Student, SexTotal>("Sex,Count=count(*)").ToList();
List<SexTotal> list10 = db.Queryable<Student>().Where(c => c.id < 20).GroupBy("sex").Select<Student, SexTotal>("Sex,Count=count(*)").ToList();
//SELECT Sex,Count=count(*) FROM Student WHERE 1=1 AND (id < 20) GROUP BY Sex --生成结果

复制代码

2、SqlQuery 用于执行原生SQL和存储过程

复制代码

//转成list
List<Student> list1 = db.SqlQuery<Student>("select * from Student");
//转成list带参
List<Student> list2 = db.SqlQuery<Student>("select * from Student where id=@id", new { id = 1 });
//转成dynamic
dynamic list3 = db.SqlQueryDynamic("select * from student");
//转成json
string list4 = db.SqlQueryJson("select * from student");
//返回int
var list5 = db.SqlQuery<int>("select top 1 id from Student").SingleOrDefault();
//反回键值
Dictionary<string, string> list6 = db.SqlQuery<KeyValuePair<string, string>>("select id,name from Student").ToDictionary(it => it.Key, it => it.Value);
//反回List<string[]>
var list7 = db.SqlQuery<string[]>("select top 1 id,name from Student").SingleOrDefault();
//存储过程
var spResult = db.SqlQuery<School>("exec sp_school @p1,@p2", new { p1 = 1, p2 = 2 });//获取第一行第一列的值
string v1 = db.GetString("select '张三' as name");
int v2 = db.GetInt("select 1 as name");
double v3 = db.GetDouble("select 1 as name");
decimal v4 = db.GetDecimal("select 1 as name");

复制代码

3、Sqlable 更贴近SQL的一种编程方式,适用于复杂查询 / Complex query

复制代码

//---------Sqlable,创建多表查询---------////多表查询
List<School> dataList = db.Sqlable()
.From("school", "s")
.Join("student", "st", "st.id", "s.id", JoinType.INNER)
.Join("student", "st2", "st2.id", "st.id", JoinType.LEFT)
.Where("s.id>100 and s.id<@id")
.Where("1=1")//可以多个WHERE
.SelectToList<School/*新的Model我这里没有所以写的School*/>("st.*", new { id = 1 });//多表分页
List<School> dataPageList = db.Sqlable()
.From("school", "s")
.Join("student", "st", "st.id", "s.id", JoinType.INNER)
.Join("student", "st2", "st2.id", "st.id", JoinType.LEFT)
.Where("s.id>100 and s.id<100")
.SelectToPageList<School>("st.*", "s.id", 1, 10);//多表分页WHERE加子查询
List<School> dataPageList2 = db.Sqlable()
.From("school", "s")
.Join("student", "st", "st.id", "s.id", JoinType.INNER)
.Join("student", "st2", "st2.id", "st.id", JoinType.LEFT)
.Where("s.id>100 and s.id<100 and s.id in (select 1 )" /*这里面写子查询都可以*/)
.SelectToPageList<School>("st.*", "s.id", 1, 10);//--------转成List Dynmaic 或者 Json-----////不分页
var list1 = db.Sqlable().From("student", "s").Join("school", "l", "s.sch_id", "l.id and l.id=@id", JoinType.INNER).SelectToDynamic("*", new { id = 1 });
var list2 = db.Sqlable().From("student", "s").Join("school", "l", "s.sch_id", "l.id and l.id=@id", JoinType.INNER).SelectToJson("*", new { id = 1 });
var list3 = db.Sqlable().From("student", "s").Join("school", "l", "s.sch_id", "l.id and l.id=@id", JoinType.INNER).SelectToDataTable("*", new { id = 1 });//分页
var list4 = db.Sqlable().From("student", "s").Join("school", "l", "s.sch_id", "l.id and l.id=@id", JoinType.INNER).SelectToPageDynamic("s.*", "l.id", 1, 10, new { id = 1 });
var list5 = db.Sqlable().From("student", "s").Join("school", "l", "s.sch_id", "l.id and l.id=@id", JoinType.INNER).SelectToPageTable("s.*", "l.id", 1, 10, new { id = 1 });
var list6 = db.Sqlable().From("student", "s").Join("school", "l", "s.sch_id", "l.id and l.id=@id", JoinType.INNER).SelectToPageDynamic("s.*", "l.id", 1, 10, new { id = 1 });//--------拼接-----//
Sqlable sable = db.Sqlable().From<Student>("s").Join<School>("l", "s.sch_id", "l.id", JoinType.INNER);
string name = "a";
int id = 1;
if (!string.IsNullOrEmpty(name))
{
sable = sable.Where("s.name=@name");
}
if (!string.IsNullOrEmpty(name))
{
sable = sable.Where("s.id=@id or s.id=100");
}
if (id > 0)
{
sable = sable.Where("l.id in (select top 10 id from school)");//where加子查询
}
var pars = new { id = id, name = name };
int pageCount = sable.Count(pars);
var list7 = sable.SelectToPageList<Student>("s.*","l.id desc",1,20, pars);

复制代码

4、新容器转换 / To new container

复制代码

using (SqlSugarClient db = SugarDao.GetInstance())
{
var list2 = db.Queryable<Student>().Where(c => c.id < 10).Select(c => new classNew { newid = c.id, newname = c.name, xx_name = c.name }).ToList();//不支持匿名类转换,也不建议使用var list3 = db.Queryable<Student>().Where(c => c.id < 10).Select(c => new { newid = c.id, newname = c.name, xx_name = c.name }).ToDynamic();//匿名类转换var list4 = db.Queryable<Student>().Where(c => c.id < 10).Select("id as newid, name as newname ,name as xx_name").ToDynamic();//匿名类转换
}

复制代码

添加/Add

复制代码

using (SqlSugarClient db = SugarDao.GetInstance())//开启数据库连接
{
Student s = new Student()
{
name = "张" + new Random().Next(1, int.MaxValue)
};db.Insert(s); //插入一条记录 (有主键也好,没主键也好,有自增列也好都可以插进去)List<Student> list = new List<Student>()
{
new Student()
{
name="张"+new Random().Next(1,int.MaxValue)
},
new Student()
{
name="张"+new Random().Next(1,int.MaxValue)
}
};db.InsertRange(list); //批量插入
}
}

复制代码

更新/Update

复制代码

using (var db = SugarDao.GetInstance())
{
//指定列更新
db.Update<School>(new { name = "蓝翔2" }, it => it.id == id);
db.Update<School, int>(new { name = "蓝翔2" }, 1, 3, 12);
db.Update<School, string>(new { name = "蓝翔2" }, new string[] { "1", "2" });//整个实体更新
db.Update(new School { id = id, name = "蓝翔2" });
db.Update<School>(new School { id = id, name = "蓝翔2" }, it => it.id == id);//设置不更新列
db.DisableUpdateColumns = new string[] { "CreateTime" };//设置CreateTime不更新TestUpdateColumns updObj = new TestUpdateColumns()
{
VGUID = Guid.Parse("542b5a27-6984-47c7-a8ee-359e483c8470"),
Name = "xx",
Name2 = "xx2",
IdentityField = 0,
CreateTime = null
};//CreateTime将不会被更新
db.Update(updObj);
//以前实现这种更新需要用指定列的方式实现,现在就简单多了。}

复制代码

删除和假删除/Delete And False Delete

复制代码

using (var db = SugarDao.GetInstance())
{
//真删除
db.Delete<School, int>(10);//注意主键必需为实体类的第一个属性
db.Delete<School>(it => it.id > 100);
db.Delete<School, string>(new string[] { "100", "101", "102" });//假删除
//db.FalseDelete<school>("is_del", 100);
//等同于 update school set is_del=0 where id in(100)
//db.FalseDelete<school>("is_del", it=>it.id==100);
}

http://chatgpt.dhexx.cn/article/sPnaq1Ih.shtml

相关文章

java 拉姆达表达式_Java8中foreach与拉姆达表达式的组合使用

1. forEach and Map 1.1 通常这样遍历一个Map Map items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); items.put("E", 50); items.put("F", 60)…

Matlab系列之数组(矩阵)的生成

从本篇开始&#xff0c;会有一段时间都将用于记录数组、矩阵的操作等等&#xff0c;如果以前没有接触过相关的&#xff0c;可能会觉得要展示的是很复杂的东西&#xff0c;但并不是&#xff0c;这是一个很简单的部分&#xff0c;但也是一个很重要的部分&#xff0c;至少现在的我…

MATLAB-数组的使用

数组的使用&#xff08;持续更新&#xff09; randperm--数组随机排列permute--置换数组维度cat--串联数组squeeze--删除数组中长度为1的维度reshape--重构数组repmat--重复数组副本数组中的&#xff1a;sort-数组的排序dig-创建对角矩阵eig--特征值和特征向量magic--幻方矩阵m…

matlab定义数组和相关函数

matlab作为一个大型的计算软件&#xff0c;里面有许多对数组的操作&#xff0c;所以数组的定义和数组的操作是一个必不可少的部分。 1 数组的定义 在matlab中对数组的定义较为灵活&#xff0c;因为特殊矩阵较多&#xff0c;所以有许多特定的定义方法。比较常见的有三种&#…

Matlab的数组索引

在 MATLAB中&#xff0c;根据元素在数组中的位置&#xff08;索引&#xff09;访问数组元素的方法主要有三种&#xff1a;按位置索引、线性索引和逻辑索引。 按元素位置进行索引 最常见的方法是显式指定元素的索引。例如&#xff0c;要访问矩阵中的某个元素&#xff0c;请依序…

Matlab笔记-数组

一、结构数组的基本使用 结构体的定义即为C语言中结构体的初始化&#xff0c;其引用成员&#xff08;在Matlab中为field,字段的意思&#xff09;和C语言相同。 1、直接赋值 >> student(1).nameSilen; student(1).id1234; student(1).grade[1 2 3;4 5 6;7 8 9]; stude…

matlab三维数组

三维数组的定义&#xff1a;在MATLAB中&#xff0c;习惯性的将二维数组的第一维称为“行”&#xff0c;第二维称为“列”&#xff0c;而于三维数组&#xff0c;其第三维习惯性地称为“页”。 定义一个三维数组&#xff1a; A&#xff08;2&#xff0c;2&#xff0c;2&#xf…

MATLAB基础——关于数组(一)

变量和数组 MATLAB程序的基本数据单元是数组&#xff0c;标量在MATLAB中也被当做数组来处理 数组可以定义为向量&#xff08;一般描述为一维数组&#xff09;或矩阵&#xff08;一般描述为二维或多维&#xff09; 访问数组中的元素&#xff1a;数组名&#xff08;&#xff09;…

Matlab 数组与矩阵

矩阵 1、v21:3:18 ;表示的是从1 开始 18 结束&#xff0c;间隔为3 的一个等差数列v2 1 4 7 10 13 162、linspace(1,10,9);,介于1-10 之间&#xff0c;取9个数&#xff0c;使得他们是一个等差数列 >> linspace(1,10,9)ans 1.0000 2.1250 3.250…

matlab常用的数组操作总结

总结一下需要的matlab数组操作&#xff0c;免得每次都要去官网上找 参考文献&#xff1a;多维数组 - MATLAB & Simulink - MathWorks 中国: https://ww2.mathworks.cn/help/matlab/math/multidimensional-arrays.html#f1-87418 文章目录 1创建并扩展多维普通数组1普通数组引…

MATLAB怎么创建矩阵和数组

参考 MATLAB怎么创建矩阵和数组 - 云社区 - 腾讯云 第一步&#xff1a;首先教给大家如何创建数组&#xff0c;MATLAB创建数组的方法比较简单&#xff0c;我们在MATLAB中输入如下代码&#xff1a;x[2 4 6 8 10] 即可创建数组&#xff0c;数据之间使用空格或者逗号隔开&#xff…

MATLAB 数组计算

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

MATLAB-数组

数组 数组分类按照数组元素个数与排列方式分类按照数组的存储方式分类 创建数组直接输入函数生成 数组操作获取数组中的元素矩阵元素的引用单个元素的引用多个元素的引用&#xff1a;冒号的特殊用法 各类型数组操作数组的算术操作数组的逻辑运算使用库函数数组连接数组切片数组…

MATLAB中的数组

一、什么是数组 数组是组织成行和列的数据值的组合。 数组可以分为向量和矩阵。 向量通常用来描述只有一维的数组&#xff1b;而矩阵用来描述二维或者多维的数组。 数组在内存中存储是按列存储的。 二、创建和初始化一维或二维数组 1、在赋值语句中初始化 % array1为一维数…

MATLAB学习笔记——数组

MATLAB的数组 数组 数组的创建 &#xff08;1&#xff09;直接输入法 1、建立数组最直接的方法是在命令窗口直接输入数组 2、数组元素间用空格&#xff0c;逗号或分号分隔。 3、空格和逗号分隔建立行向量&#xff0c;元素之间用分号分隔建立列向量。 调用格式&#xff1…

Matlab中的向量和数组(超详细)

Matlab中的向量和数组&#xff08;超详细&#xff09; 文章目录 Matlab中的向量和数组&#xff08;超详细&#xff09;Matlab中的向量介绍创建向量向量的大小索引向量数值索引逻辑索引 缩短向量向量运算算术运算逻辑运算sum()、min()、max()、round()、ceil()、floor()、fix()切…

Windows server :DHCP服务 地址保留DHCP域备份

实验环境&#xff1a;在虚拟机上 一台Windows server 2016 一台Windows 10 1.DHCP 地址保留 我们到server上的服务器管理界面 右上角工具》dhcp 进入dhcp 依次找到作用域 然后我们去看被Windows 10 保留分配的mac地址 可以看到物理地址为&#xff1a;00-0C-29-77-BF-7C 这时再…

计算机ip保留地址,分类ip地址中,保留地址有哪些?具体点说说,作业。

分类ip地址中,保留地址有哪些?具体点说说,作业。以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 分类ip地址中,保留地址有哪些?具体点说说,作业。 A类地址中的私有地址和保留地址: ①10.0.0.1到10.255.25…

保留的IP地址

主机ID全为0的地址&#xff1a;特指某个网段&#xff0c;比如192.168.10.0 255.255.255.0。指192.168.10.0网段。主机ID全为1的地址&#xff1a;特指该网段的全部主机&#xff0c;如果你的计算机发送数据包使用主机ID全是1的IP地址&#xff0c;用作广播&#xff0c;数据链路层…

DHCP 地址保留

1.查看需要保留地址主机的mac地址 2.编辑DHCP服务器的配置文件 vim /etc/dhcp/dhcpd.conf 3.重启DHCP服务器 service dhcpd restart 4.重启测试机的网卡 ifdown eth0;ifup eth0