问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

LINQ的语法实例

发布网友 发布时间:2022-04-27 13:17

我来回答

2个回答

懂视网 时间:2022-04-09 02:41

  //1
  var ss = from r in db.Am_recProScheme
   select r;
  //2
  var ss1 = db.Am_recProScheme;
  //3
  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();

  string sssql = "select * from Am_recProScheme where rpid>10 order by rpId [desc|asc]";
技术分享

5.top(1)

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

  //()linq to ef 好像不支持 Last() 
  var ss1 = db.Am_recProScheme.FirstOrDefault();
  //var ss1 = db.Am_recProScheme.First();  

  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
  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
  string st = "select * from Am_recProScheme where rpId in(24,25,26)";
技术分享

Linq语法详细(三种方式:linq、Lambda、SQL语法)

标签:

热心网友 时间:2022-04-08 23:49

C#3.0 LINQ 查询语法
首先来看一个很简单的LINQ查询例子,查询一个int数组中小于5的数字,并按照大小顺序排列:
static void Main(string[] args)
{
int[] arr = new int[] { 8, 5, 89, 41, 1, 2, 3, 65, 1 };
var m = from n in arr where n < 5 orderby n descending select n;//小于5,并且倒叙排列显示
foreach (var n in m)
{
Console.WriteLine(n);
}
Console.ReadLine();
}
上述代码除了LINQ查询语法外,其他都是我们所熟悉的语法,而LINQ查询语法跟SQL查询语法很相似,除了先后顺序。
Q:为何 LINQ 查询语法是以 from 关键字开头的,而不是以 select 关键字开头的?select 开头这种写法跟SQL的写法更接近,更易懂呀?
A:简单来说,为了IDE的智能感知(Intellisence)这个功能,select 关键字放在后面了。
编程语言以 select 开头写LINQ查询语法不是没出现过,你如果使用过2005年的VB9 CTP 版本,那时候VB9的LINQ查询语法就是 select 关键字在前面,但是 select 关键字在前面,在做智能感知(Intelisence)时候就很头大。经过微软IDE组的权衡,确定了把 from 关键字放在最前面。
那时候 VB9 LINQ的查询语法还是 select 参数在最前面。不过后来 VB9 测试版改成了跟 C# 一样的做法, from 关键字放在最前面了。
更详细的解释,来自装配脑袋
假设你要书写这样的代码:Select p. Name, p.Age From p In persons Where xxx ,代码是一个个字符输入的。
我们在写到 p in persons 之前,p 的类型是无法推测的,所以写 Select p. 的时候,Name之类的属性不会弹出智能提示来。
这样就需要先去写 From 这句,再回来写 Select。
微软IDE组经过反复考虑决定,还不如就把 Select 写到后面了。于是编程语言中的写法就确定这样来写了。
VB9 的这个变化可以参看这篇博客:
Select/From vs. From/Select revisited...
我们再来看一个稍稍复杂的LINQ查询:
在我们列举的语言字符串中,我们希望按照字符长短,分类列举出来,实现代码如下:
static void Main(string[] args)
{
string[] languages = { Java, C#, C++, Delphi, VB.net, VC.net, C++Builder, Kylix, Perl, Python };
var query = from item in languages
group item by item.Length into lengthGroups
orderby lengthGroups.Key
select lengthGroups;
foreach (var item in query)
{
Console.WriteLine(strings of length{0}, item.Key);
foreach (var val in item)
{
Console.WriteLine(val);
}
}
Console.ReadLine();
}
其中的 into 关键字表示 将前一个查询的结果视为后续查询的生成器,这里是跟 group by 一起使用的。
LINQ中的Group by不要跟 SQL 中的Group by 混淆,SQL由于是二维结构,Group by 的一些逻辑受二维结构的约束,无法像 LINQ 中的Group by 这么灵活。
事实上,LINQ的查询语法存在以下两种形式:
查询方法方式:(Methord Syntax)
主要利用System.Linq.Enumerable类中定义的扩展方法和Lambda表达式方式进行查询
查询语句方式:(Query Syntax)一种更接近SQL语法的查询方式,可读性更好。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
焦作有哪些旅行景点值得一去? 河南穿古装去的地方 AE入门从学会套模板开始,AE模板套用简易教程,看起来复杂的AE其实也很... ae怎么套用模板ae模版的使用方法 北京通州区有什么好玩的地方吗 请问现在有哪些看电影的网站?越多越好~~ 帮初中女儿请假一天讲身体不适,班主任却跟别的老师讲她得了大病,该如何... 梦见家中被盗空只剩一件绿色衣的预兆 梦见美丽沙穗 美版4s内置卡贴有什么危害? 如何保护自己的信息安全 怎么才能保证个人信息安全? entity framework中怎么通过lambda表达式生成sql语句的 汽车急转弯有什么危害 linq用lambda表达式 left join 自连接怎么写 驾驶汽车在转向时,有哪些注意事项需要知道? unity里面Lambda表达式,LINQ需要吗 车辆转弯技巧 lanbda linq 什么关系呢? linq的优势是什么?为什么都提倡数据使用用linq呢?Asp.net,C# 汽车转弯有什么技巧? 怎么用linq或lambda实现这种包含关系的查询 lambda表达式可以在sql数据库查询里面直接用吗 汽车如何转弯 linq查询速度快还是sql啊 汽车转弯时如何操作? linq的优势是什么? MVC,Entity Framework,Linq,Lambda,kendoUI和jQuery有什么区别_百度知 ... SQL与LINQ的区别是什么啊? LinQ 可以取代SQL语句吗? 汽车转弯要注意什么? 如何保护好信息安全 汽车转弯技巧及注意事项有哪些 什么是汽车的转弯半径? 汽车转弯 如何操作? 汽车在路口转弯时要注意什么? 小米手机用什么软件分享wifi密码 汽车转弯有异响怎么回事? 三星电视怎么连接无线网 三星UA55ES6100电视机可以与手机无线同屏共享吗 三星UA55ES6100电视机可以与手机无线同屏共享吗? 华为手机wifi如何直连三星电视然后屏幕共享? 三星手机无线连接三星电视的方法 三星智能电视怎么连接wifi 明基mx661投影仪带lan口是干吗用的?作为家用合适吗?品质如何,请知道的指教, 明基mx661u盘读取不出来 明基MX615+ 此无线投影仪可否加送无线模块 二三百的投影仪好用吗? 为什么德国FW2000不能成为战略轰炸机,同样四发,看上去还比B-17还大呢,为什么老希就不选择它 一级圆柱齿轮减速器运输带工作拉力Fw(N) 2000工作速度V(m&#47;s)1.8滚筒直径D(mm)450 日工作时数24传动年限5