zoukankan      html  css  js  c++  java
  • .net lambad表达式操作数据库

    里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下:

    1.select语句:books.Select(p=>new { p.Title, p.UnitPrice, p.Author});//需用匿名方式

    2.where语句:books.Where(p=>p.UnitPrice==100&&p.Title=”ABC”);

    补充:

    像数据库中的LIKE ‘%c++%’,LAMBDA中用p.Title.Contains(“c++”)表示;

    像数据库中的LIKE ‘c%’,LAMBDA中用p.Title.StartWith(“c”)表示;

    像数据库中的LIKE ‘%c’,LAMBDA中用p.Title.EndsWith(“c”)表示;

    Where的另一种表现形式:

    books.Where(p=>{

        var ret = p.UnitPrice>30&&p.Title.Contains(“c++”);

        return ret;

    });

    3.排序语句:

    像数据库中order by 升序:

    通过 “对象.OrderBy(p=>p.UnitPrice)”实现

    像数据库中order by 降序:

    通过 “对象.OrderByDescending(p=>p.UnitPrice)”实现

    像数据库中order by UnitPrice desc,Title asc:

    通过 ”对象.OrderByDescending(p=>p.UnitPrice).ThenBy(p=>p.Title)”

    反过来则是: ”对象.OrderBy(p=>p.UnitPrice).ThenByDescending(p=>p.Title)”

    4.组函数:

      var max = books.Where(p => p.CategoryId == 1001).Max(p => p.UnitPrice);

            var min = books.Min(p => p.UnitPrice);

            var count = books.Count( );

            var avg = books.Average(p => p.UnitPrice);

            var sum = books.Sum(p => p.UnitPrice);

    注意,上面这些获得的东西,不是对象,是单个值

    5. GROUP BY函数

    // select categoryid,max(unitpirce) from books group by categoryid having max(unitprice)>50

            var list6 = books.GroupBy(p => p.CategoryId).Where(p=>p.Max(q=>q.UnitPrice)>50);

            foreach (var item in list6)

            { 

                Response.Write(string.Format("

    • 类别编号:{0},最高价{1}
    • ",

    item.Key,item.Max(p=>p.UnitPrice)));

            }

    6. TOP函数

    //取一个范围 如3,5

    var list7 = books.Skip(2).Take(3).Select(p => new { p.Title, p.CategoryId,  p.UnitPrice });

    // select top 5 

    var list7 = books.Take(5).OrderByDescending(p => p.UnitPrice)

     .Select(p => new { p.CategoryId, p.UnitPrice, p.Title, p.Author });

    7.union 函数

    books.Where(p => p.CategoryId == 1001).Select(p => new { p.CategoryId, p.UnitPrice, p.Title, p.Author }).Union(books.Where(p => p.CategoryId == 1002).Select(p => new { p.CategoryId, p.UnitPrice, p.Title, p.Author }));

    这里的Select子句中的列需对应,跟数据库中是一样的

    8.Join方法,用于实现数据库中双表连接查询

    //select a.title,a.unitprice,a.categoryid,b.id,b.name from books a,category b 

    //where a.categoryid=b.id and b.name=‘数据库’

    books.Join(cates.Where(m => m.Name == "数据库"),p => p.CategoryId, q => q.ID, (a, b) => new { a.Title, a.UnitPrice, a.CategoryId, b.ID, b.Name });

    说明:

    Join()方法的调用对象类似于在SQL语句中第一张表的表名

    而Join()方法的第一个形参是第二张表表名的Where条件

    Join()方法的第二和第三个参数分别表示第一张表与第二张表的关联字段

    Join()方法的第四个参数表示从两表中需要获取的字段,(a, b)分别表示第一张表和第二张表

  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/yjm8023/p/11161931.html
Copyright © 2011-2022 走看看