zoukankan      html  css  js  c++  java
  • .net中LAMBDA表达式常用写法

    这里主要是将数据库中的常用操作用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 descTitle 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)分别表示第一张表和第二张表

  • 相关阅读:
    NX二次开发-UF_MODL_ask_angle_tolerance获取建模的角度公差
    NX二次开发-UF_MODL_create_bplane创建有界平面
    NX二次开发-UF_MODL_ask_point_containment获取一个点是在体(面,边)的边界内部,外部,还是边界上
    NX二次开发-UFUN获取相邻面UF_MODL_ask_adjac_faces
    NX二次开发-UFUN链表UF_MODL_create_list等用法
    NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
    NX二次开发-Ufun C函数例子目录【更新日期2020.7.5】
    NX二次开发-C++time函数计时
    NX二次开发-C++的vector用法
    关于C++里set_intersection(取集合交集)、set_union(取集合并集)、set_difference(取集合差集)等函数的使用总结
  • 原文地址:https://www.cnblogs.com/qixu/p/6346844.html
Copyright © 2011-2022 走看看