zoukankan      html  css  js  c++  java
  • 学习simple.data之进阶篇

    一、结果排序

    -OrderBy(升序)

    -OrderByDescending(降序)

    db.Product.All().OrderByFactoryName();
    db.Product.All().OrderByFactoryNameDescending();

    db.Product.All().OrderBy(db.Product.FactoryName);
    db.Product.All().OrderByDescending(db.Product.FactoryName);

    二、表连接

    1 、无外键约束

    1.1 自然连接

    -Join

    -Left Join

    -Outer Join

    var q = _db.Order.Query()
    .Join(_db.OrderDetail, )
    .Where(_db.OrderDetail.UnitPrice > 15000);
    List<dynamic> employees = q.Select(_db.Order.OrderCode, q.OrderDetail.CategoryName).ToList();

    1.2、级联查询

    -With

    -WithOne

    -WithMany

    dynamic OrderDetailAlias;
    var OrderDetails = db.Order.All()
    .With(db.Order.OrderDetail.As("OrderDetailInfo"), out OrderDetailAlias) 
    .Select( db.Order.OrderCode, BandAlias.Name);

    2、外键约束

    2.1、单个数据集返回

    var orders = _db.Order.FindAllByCustomerId(10)
    .Select(_db.Order.OrderCode, q.Order.OrderDetail.CategoryName);

    (利用数据库外键)

    var orders = _db.Order.FindAllByCustomerId(10)
    .Select(_db.Order.OrderCode, _db.OrderDetail.CategoryName)
    .Join(_db.OrderDetail).On(OrderId: _db.Order.PKID);

    (替代外键)

    var orders = _db.Order.FindAllByCustomerId(10)
    .Select(_db["Order"]["OrderCode"], _db["OrderDetail"]["CategoryName"])
    .Join(_db["OrderDetail"]).On(OrderId: _db["Order"]["PKID"]);

    (替代外键-索引写法)

    三、聚合函数

    1、Having

    var orderDetails= db.OrderDetail.All()
    .Select(db.OrderDetail.Order.OrderCode, 
            db.OrderDetail.PKID.Count().As("OrderDetailCount"))
    .Having(db.OrderDetail.PKID.Count() > 2);

    2、Max、Min、Sum、Count、Avg

    var orderDetails=db.OrderDetail.All().Having(db.OrderDetail.UnitPrice.Max()>100);
    var orderDetails=db.OrderDetail.All().Having(db.OrderDetail.UnitPrice.Min()>100);

    3、Count、CountDistinct

    var orderDetails=db.OrderDetail.All().Select(db.OrderDetail.OrderId.Count());
    var orderDetails=db.OrderDetail.All().Select(db.OrderDetail.OrderId.CountDistinct());去重数量

    四、帮助函数

    1、Length(字段长度)

    var codeLength=db.Order.Select(db.Order.OrderCode.Length().As("CodeLength"));

    2、转换为标量值

    2.1、ToScalar、ToScalar<T>从查询结果中返回一个属性作为标量值

    int id=db.Order.Get(1).ToScalar();
    int id=db.Order.Select(db.Order.Id).Get(1).ToScalar();

    2.2、ToScalarOrDefault、ToScalarOrDefault<T>从查询结果中返回一个属性作为标量值,这个值作为它的默认值。如果属性值为NULL,ToScalarOrDefault<T>返回default<T>

    string orderCode=db.Order.FindAllById(1).Select(db.Order.OrderCode).ToScalarOrDefault();

    2.3、ToScalarList、ToScalarList<T>从一系列查询结果中返回某个列表作为标量值

    List<string> orderDetails=db.OrderDetail.FindAllByOrderId(1).Select(db.OrderDetail.CategoryName).ToScalarList<string>();

    2.4、ToScalarArray、ToScalarArray<T>从一系列查询结果中返回某个数组作为标量值

    string[] orderDetails=db.OrderDetail.FindAllByOrderId(1).Select(db.OrderDetail.CategoryName).ToScalarArray<string>();

    待续...

  • 相关阅读:
    python assert断言函数
    Python中错误之 TypeError: object() takes no parameters、TypeError: this constructor takes no arguments
    python 3.5构建WINDOWS推送服务
    Python调用(运行)外部程序
    sqlalchemy相关知识
    利用rabbit_mq队列消息实现对一组主机进行命令下发
    Centos 下安装Zabbix Linux 客户端
    Lynis 2.2.0 :面向Linux系统的安全审查和扫描工具
    防暴力破解 Fail2Ban之python
    linux服务器被攻击处理过程
  • 原文地址:https://www.cnblogs.com/hj4444/p/3975600.html
Copyright © 2011-2022 走看看