用linq和sqlsugar 聚类的对比

例如我现在有个需求, 焊接机器人生产 “封头” 和 “支座” 2种产品, 每次生产完毕, 机器人发信号给PLC ,记录一次生产类型, 完成时间等属性. 我们需要把这些产品 按日期+小时, 分段统计出 每个小时 各种类型的产品产量. 并用echart 用柱状图展示出来, 每小时一组.

如果用linq 是这么做

假设我们有以下原始数据:

List<Product> list1 = new List<Product>
{
   
   
    new Product {
   
    Time = new DateTime(2024, 10, 12, 10, 0, 0), ProductType = "A" },
    new Product {
   
    Time = new DateTime(2024, 10, 12, 10, 0, 0), ProductType = "B" },
    new Product {
   
    Time = new DateTime(2024, 10, 12, 11, 0, 0), ProductType = "A" },
    new Product {
   
    Time = new DateTime(2024, 10
### 如何在 SqlSugar ORM 中使用 LINQ 方法 #### 创建数据库连接实例 为了能够执行任何查询,首先需要创建 `SqlSugarClient` 的实例来建立与数据库的连接。这通常通过配置数据库连接字符串其他必要的参数完成。 ```csharp private readonly SqlSugarClient db = UtilDbConn.GetDbConnection(); ``` 这段代码展示了如何初始化一个名为 `db` 的 `SqlSugarClient` 实例[^2]。 #### 查询数据表中的记录 一旦有了数据库上下文对象 (`SqlSugarClient`),就可以利用它来进行各种类型的查询操作。下面的例子说明了怎样从指定的数据表中检索所有记录: ```csharp var list = await db.Queryable<Student>().ToListAsync(); ``` 这里调用了 `Queryable<T>()` 方法指定了要查询的目标表 (即 `Student` 表),并最终通过 `ToListAsync()` 将结果异步加载成列表形式返回给变量 `list`。 #### 进行条件筛选 除了获取全部条目外,还可以应用过滤器以只取回满足特定条件的结果集。例如,如果想要查找年龄大于等于18岁的学生,则可以这样做: ```csharp var adults = await db.Queryable<Student>() .Where(s => s.Age >= 18) .ToListAsync(); ``` 此段代码片段里包含了 `.Where()` 子句用于定义选择标准;只有那些符合条件的学生才会被加入到最后得到的集合当中去。 #### 排序分页功能 对于大型数据集来说,排序以及实施分页是非常重要的特性之一。可以通过链式调用来实现这些需求: ```csharp // 获取前五名按分数降序排列的成绩最高的学生 var topStudents = await db.Queryable<Student>() .OrderByDescending(s => s.Score) .Take(5) .ToListAsync(); // 分页显示每页十条记录,当前处于第二页 int pageNumber = 2; int pageSize = 10; var pagedResult = await db.Queryable<Student>() .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToListAsync(); ``` 上述例子分别实现了基于成绩字段进行倒序排列后的顶部五个元素提取,还有按照一定规则跳过若干项后再截取固定数量项目的逻辑处理方式。 #### 更新现有记录 当需要修改已存在的某一条或多条记录的信息时,可采用如下模式: ```csharp await db.Updateable(new Student { Id = 1, Name = "NewName", Age = 20 }) .ExecuteCommandAsync(); ``` 此处展示了一个简单的更新语句,其中传入的对象代表了待更改的内容及其对应的唯一标识符(通常是主键)。之后借助于 `Updateable()` 函数配合 `ExecuteCommandAsync()` 来提交变更请求至服务器端。 #### 删除单个或多个实体 最后,在某些情况下可能还会涉及到移除不再需要的数据单元。为此提供了两种不同的途径——删除单一项目或是批量清除多条匹配项: ```csharp // 移除ID为3的学生信息 await db.Deleteable<Student>(3).ExecuteCommandAsync(); // 清理掉所有姓氏不是'Li'的人 await db.Deleteable<Student>() .Where(x => !x.Name.StartsWith("Li")) .ExecuteCommandAsync(); ``` 以上就是关于如何运用 SQLugar ORM 库内建的支持 LINQ 的 API 完成基本 CRUD 操作的一些介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值