初探Linq表达式和lambda表达式

2023-11-14

【Linq表达式】

         LINQ,语言集成查询(LanguageIntegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者VisualBasic代码以查询数据库相同的方式操作内存数据。

        博主认为,Linq表达式在用法方面就是SQL语句的变形,只要将SQL语句按照执行顺序来重新编写就可以得到Linq表达式。

【Lambda表达式】

        Lambda 用在基于方法的 LINQ查询中,对网上查询到的关于Lambda表达式的资料不甚了解。Lambda表达式的使用在C#中,Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。

        博主认为:Lambda用于Linq查询中,Lambda表达式就是用Lambda语法将Linq表达式表示出来。

       下面用几个语句对Linq表达式和Lambda表达式进行区别,为了便于理解,每个例子都以SQL语句、Linq表达式、Lambda表达式三种形式呈现。

1.简单的查询

//1——Linq表达式
var ss = from r in db.Am_recProScheme
         select r;
//2——Lambda表达式
var ss1 = db.Am_recProScheme;
//3——SQL语句
string sssql = "select * from Am_recProScheme";
2.带where的查询

//1
var ss = from r in db.Am_recProScheme
         where r.rpId > 10
         select r;
//2
var ss1 = db.Am_recProScheme.Where(p => p.rpId > 10);
//3
string sssql = "select * from Am_recProScheme where rpid>10";
3.简单的函数计算(count,min,max,sum)
//1
获取最大的rpId
//var ss = (from r in db.Am_recProScheme
//          select r).Max(p => p.rpId);
获取最小的rpId
//var ss = (from r in db.Am_recProScheme
//          select r).Min(p => p.rpId);
//获取结果集的总数
//var ss = (from r in db.Am_recProScheme                  
//         select r).Count();
//获取rpId的和
var ss = (from r in db.Am_recProScheme
         select r).Sum(p => p.rpId);


//2
//var ss1 = db.Am_recProScheme.Max(p=>p.rpId);
//var ss1 = db.Am_recProScheme.Min(p => p.rpId);
//var ss1 = db.Am_recProScheme.Count() ;
var ss1 = db.Am_recProScheme.Sum(p => p.rpId);
Response.Write(ss);

//3
string sssql = "select max(rpId) from Am_recProScheme";
       sssql = "select min(rpId) from Am_recProScheme";
       sssql = "select count(1) from Am_recProScheme";
       sssql = "select sum(rpId) from Am_recProScheme";
4.排序order by desc/asc
var ss = from r in db.Am_recProScheme
         where r.rpId > 10
         orderby r.rpId descending  //倒序
         //  orderby r.rpId ascending   //正序
         select r;

//正序
var ss1 = db.Am_recProScheme.OrderBy(p => p.rpId).Where(p => p.rpId > 10).ToList();
//倒序
var ss2 = db.Am_recProScheme.OrderByDescending(p => p.rpId).Where(p => p.rpId > 10).ToList();
<span style="font-family: Calibri; font-size: 18.6667px;">string sssql = "select * from Am_recProScheme where rpid>10 order by rpId [desc|asc]";</span>
5.top(1)

//1 如果取最后一个可以按倒叙排列再取值
var ss = (from r in db.Am_recProScheme                     
         select r).FirstOrDefault();

//2 linq to ef 好像不支持 Last() 
var ss1 = db.Am_recProScheme.FirstOrDefault();
//var ss1 = db.Am_recProScheme.First();          
//3 
string sssql = "select top(1) * from Am_recProScheme";
6.跳过前面多少条数据取余下的数据
//1
var ss = (from r in db.Am_recProScheme
         orderby r.rpId descending
         select r).Skip(10); //跳过前10条数据,取10条之后的所有数据   
//2  
var ss1 = db.Am_recProScheme.OrderByDescending(p => p.rpId).Skip(10).ToList();
//3
string sssql = "select * from  (select ROW_NUMBER()over(order by rpId desc) as rowNum, * from [Am_recProScheme]) as t where rowNum>10";
7.分页数据查询
//1
var ss = (from r in db.Am_recProScheme
         where r.rpId > 10
         orderby r.rpId descending
         select r).Skip(10).Take(10); //取第11条到第20条数据                   

//2 Take(10): 数据从开始获取,获取指定数量(10)的连续数据
var ss1 = db.Am_recProScheme.OrderByDescending(p => p.rpId).Where(p => p.rpId > 10).Skip(10).Take(10).ToList();
//3
string sssql = "select * from  (select ROW_NUMBER()over(order by rpId desc) as rowNum, * from [Am_recProScheme]) as t where rowNum>10 and rowNum<=20";
8.包含,类似like '%%'
//1
var ss = from r in db.Am_recProScheme
         where r.SortsText.Contains("张")
         select r;
//2
var ss1 = db.Am_recProScheme.Where(p => p.SortsText.Contains("张")).ToList();
//3
string sssql = "select * from Am_recProScheme where SortsText like '%张%'";
9.分组group by
//1
var ss = from r in db.Am_recProScheme
         orderby r.rpId descending
         group r by r.recType into n
         select new
         {
                n.Key,  //这个Key是recType
                rpId = n.Sum(r => r.rpId), //组内rpId之和
                MaxRpId = n.Max(r => r.rpId),//组内最大rpId
                MinRpId = n.Min(r => r.rpId), //组内最小rpId
          };
foreach (var t in ss)
{
       Response.Write(t.Key + "--" + t.rpId + "--" + t.MaxRpId + "--" + t.MinRpId);
}
//2
var ss1 = from r in db.Am_recProScheme
          orderby r.rpId descending
          group r by r.recType into n
          select n;
foreach (var t in ss1)
{
        Response.Write(t.Key + "--" + t.Min(p => p.rpId));
}
//3
var ss2 = db.Am_recProScheme.GroupBy(p => p.recType);
foreach (var t in ss2)
{
        Response.Write(t.Key + "--" + t.Min(p => p.rpId));
}
//4
string sssql = "select recType,min(rpId),max(rpId),sum(rpId) from Am_recProScheme group by recType";
10.连接查询
//1
var ss = from r in db.Am_recProScheme
         join w in db.Am_Test_Result on r.rpId equals w.rsId
         orderby r.rpId descending
         select r;
//2
var ss1 = db.Am_recProScheme.Join(db.Am_Test_Result, p => p.rpId, r => r.rsId, (p, r) => p).OrderByDescending(p => p.rpId).ToList();
//3
string sssql = "select r.* from  [Am_recProScheme] as r inner join [dbo].[Am_Test_Result] as t on r.[rpId] = t.[rsId] order by r.[rpId] desc";
11.sql中的In
//1——Linq
var ss = from p in db.Am_recProScheme
         where (new int?[] { 24, 25,26 }).Contains(p.rpId)
         select p;
foreach (var p in ss)
{
       Response.Write(p.Sorts);
}
//2——SQL
string st = "select * from Am_recProScheme where rpId in(24,25,26)";

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初探Linq表达式和lambda表达式 的相关文章

随机推荐

  • 电商打折套路解析

    1 分析出 各个品牌都有多少商品参加了双十一活动 这里面有个问题 最后在设置分类是设置错了 应该有4个类 少量少打折 少量大打折 大量小打折 大量大打折 分析思路可以参考下面的思维导图 import numpy as np import p
  • 使用Matplotlib画心形函数图

    函数如下 代码如下 import numpy as np import matplotlib pyplot as plt 导入模块 t np arange 6 6 0 1 x 16 np power np sin t 3 y 13 np c
  • labview与三菱PLC通讯研究

    labview 与三菱 PLC 通讯研究 一 介绍Labview Labvie是实验室虚拟仪器工程工作台 Labview Virtual Instruments Engineering Workbench 的简称 是美国国家仪器公司开发的虚
  • Spring 日志框架

    Spring5 日志使用 Spring jcl 模块 测试一下spring5 的默认日志实现 public class LogDemo public static void main String args Log logger LogFa
  • 第十五届全国大学生信息安全竞赛(ciscn初赛) 部分writeup

    杂项的附件地址 https share weiyun com BZyngGSZ CISCN web Ezpop misc everlasting night ez usb 问卷调查 pwn login nomal crypto 签到电台 基
  • ICDE2020

    Improving Neural Relation Extraction with Implicit Mutual Relations Jun Kuang Yixin Cao Jianbing Zheng Xiangnan He Ming
  • Centos虚拟机使用virt-manager创建虚拟机

    目录 使用virt manager 主机与centos7虚拟机的共享文件夹设置 将共享文件夹中的iso文件复制到上个home iso目录下 使用virt manager创建虚拟机 上篇文章链接 VM下安装Ubuntu CentOS并安装配置
  • C#两种进程暂停和继续的方法 2021-02-16

    C 两种进程暂停和继续的方法 方法一 方法二 方法一 可以使用Thread Suspend和Thread Resume这两个方法 namespace ThreadSuspended public partial class Form1 Fo
  • CLIP跨语言多模态模型 pytorch下安装

    github地址 GitHub openai CLIP Contrastive Language Image Pretraining 创建python环境 conda create n CLIP python 3 8 安装pytorch和t
  • lxml.html方法,用lxml编辑html代码

    假设我有html代码 它被破坏了 它是从另一个程序给出的 我必须找到其中的所有图像 并将src属性更改为一些代码 仅此而已 它应该在决赛中被打破 在 这是我的代码 coding utf 8 from lxml import etree fr
  • Android 查看是否已经安装某应用(获取某应用的包名)

    借助的工具 adb以及真手机 adb下载 https dl google com android repository platform tools r33 0 1 windows zip 下载解压 解压到ADB文件 复制该路径 配置环境变
  • 数据库SQL运用(1)

    数据库关键字 Top Like In Between As Join InnerJoin LeftJoin RightJoin FullJoin Union Top Top 子句用来截取要返回的数目 如果查询出的数据有成千上百条 那么Top
  • 机器学习——回归问题中的曲线过拟合问题

    问 使用简单的函数解决回归问题时更容易过拟合 答 使用简单的函数解决回归问题可能更容易欠拟合 而不是过拟合 这是因为简单的函数通常具有较低的灵活性 不能很好地拟合复杂的数据模式 因此 如果使用简单的函数来解决复杂的回归问题 则可能会发生欠拟
  • 计算机二级python基础题刷题笔记(三)

    hello 看到三的小伙伴们你们已经超过30 的对手啦 接下来也要加油呀 代码没有最好 只有更好 如果你有更好的想法答案欢迎在评论区里发表呀 1 将程序里定义好的std列表里的姓名和成绩与已经定义好的模板拼成一段话 显示在屏幕里 std 张
  • 使用QrCode解析二维码

    使用QrCode识别二维码 1 引入QrCode import QrCode from qrcode decoder 2 HTML 使用el upload上传图片
  • 中秋-canvas-唯美星空

    明月几时有 把酒问青天 不知天上宫阙 今夕是何年 我欲乘风归去 又恐琼楼玉宇 高处不胜寒 起舞弄清影 何似在人间 转朱阁 低绮户 照无眠 不应有恨 何事长向别时圆 人有悲欢离合 月有阴晴圆缺 此事古难全 但愿人长久 千里共婵娟 值此中秋佳节
  • IMU预积分的一些理解

    IMU预积分 算是比较简单的一个算法 无奈网上找到的资料都讲的晦涩难懂 看明白了也觉得不过如此 讲一下我的理解 整体流程 1 推导IMU离散运动方程 2 根据离散运动方程 进行预积分 并将预积分的误差项拆分出来 因为我们在定义误差的时候 有
  • 图像处理——matlab人脸识别(1)

    目录 一 前言 二 相关程序 一 主函数 二 图库生成函数 三 图库图像命名函数 四 待识别图库生成函数 五 待识别图库命名函数 六 图像数据导入函数 七 PCA简单主成分分析函数 八 图像匹配函数 三 识别效果 一 前言 近期 要做一个人
  • 本地服务器部署环境和搭建项目②

    安装本地虚拟机 虚拟机版本 16 CenterOS版本 7 0 启动虚拟机之后进入配置 虚拟机安装完成 准备SSH连接远程服务器的工具 准备XFTP 7 0版本 用来将本地文件上传到Linux系统 传输文件 1 可以使用ctrl c ctr
  • 初探Linq表达式和lambda表达式

    Linq表达式 LINQ 语言集成查询 LanguageIntegrated Query 是一组用于c 和Visual Basic语言的扩展 它允许编写C 或者VisualBasic代码以查询数据库相同的方式操作内存数据 博主认为 Linq