当前位置: 首页 > news >正文

SQLSugar单列查询Select和条件查询Where的封装

sqlsugar官网:

SqlSugar .Net ORM 5.X 官网 、文档、教程 - SqlSugar 5x - .NET果糖网

如题:

官网里有个查询一列的例子。

db.Queryable<Student>().Select(it=>it.Name).ToList() //单值 查询列 查询单独列

如图:

想着把它封装一下。如下:

using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;

// 假设这是你的 WI_ARTICLE 类
public class WI_ARTICLE
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
}

public class Repository
{
    private static SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = "your_connection_string",
        DbType = DbType.SqlServer,
        IsAutoCloseConnection = true
    });

    public static List<TResult> QueryWithSelect<TSource, TResult>(Expression<Func<TSource, TResult>> selectExpression)
    {
        return db.Queryable<TSource>().Select(selectExpression).ToList();
    }
}

class Program
{
    static void Main()
    {
        // 查询部分数据并映射到模型上
        var articles = Repository.QueryWithSelect<WI_ARTICLE, WI_ARTICLE>(s => new WI_ARTICLE
        {
            ID = s.ID
            // 可以根据需要添加更多属性
        }).ToList();

        foreach (var article in articles)
        {
            Console.WriteLine($"ID: {article.ID}");
        }
    }
}

这样就可以按需查询对应的列了。较比下面查所有要效率高。

List<Student> list=db.Queryable<Student>().ToList()
//select * from Student

补充:条件查询的封装

sqlsugar分页例子:

分页查询,同步分页和异步分页 - SqlSugar 5x - .NET果糖网

具体封装如下:

#region 方法:单表分页查询 + public List<T> QueryByWherePage(int pageIndex, int pageSize, Expression<Func<T, bool>> whereExpression, string orderbyStr)
/// <summary>
/// 单表分页查询
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">页容量</param>
/// <param name="whereExpression">条件表达式</param>
/// <param name="orderbyStr">排序字段</param>
/// <returns></returns>
public List<T> QueryByWherePage(int pageIndex, int pageSize, Expression<Func<T, bool>> whereExpression, string orderbyStr)
{
    using (SqlSugarClient dbClient = SqlSugarInstance.GetInstance())
    {
        return dbClient.Queryable<T>().Where(whereExpression).OrderBy(orderbyStr).ToPageList(pageIndex, pageSize);
    }
}
#endregion

仅供学习参考,如有侵权联系我删除。

http://www.dtcms.com/a/106577.html

相关文章:

  • 整点报时时间HTML源码
  • gitee 配置git上传
  • 扫描线离散化线段树解决矩形面积并-洛谷P5490
  • 《电流与电压的誓约》
  • (六)窗口表面
  • 【SPP】蓝牙串口配置中LM互操作性要求深度解析
  • 解决elementui-plus使用el-table的合计功能时横向滚动条显示在了合计上方
  • 基于SpringBoot的河道水情大数据可视化分析平台设计与实现(源码+论文+部署讲解等)
  • 在 Rocky Linux 9.2 上编译安装 Redis 6.2.6
  • MaxScript 实现冒泡排序算法
  • .Net8项目使用docker、docker-compose部署步骤
  • C++STL——容器-vector(含部分模拟实现,即地层实现原理)(含迭代器失效问题)
  • Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-03)
  • uni-app:firstUI框架的选择器Select改造,添加一个搜索的插槽
  • 以 dockurr/windows 容器运行一个windows 操作系统
  • QML输入控件: Slider的高级外观定制(音视频控制条)
  • 接口测试及常用接口测试工具
  • 【C语言】深入理解指针(五):sizeof、strlen与数组指针的那些事儿
  • 【学Rust写CAD】26 图形像素获取(pixel_fetch.rs)
  • 红日靶场一实操笔记
  • C++ QT 如何生成dll提供給python使用
  • 星途​(小说)
  • 零欧姆电阻的作用、使用场景及注意事项详解
  • PyTorch 核心详解
  • 第六章、Isaacsim中的资产(usd)
  • 【嵌入式系统设计师】知识点:第1章 计算机系统基础知识
  • 方案精读:IPD业务流程体系构建(中)【附全文阅读】
  • 介绍一点metric self-join和复合索引笔记
  • 数组中两个字符串的最小距离
  • 【深度学习量化交易19】行情数据获取方式比测(1)——基于miniQMT的量化交易回测系统开发实记