LINQ 基本子句之一 (select/where/group/into)
特别喜欢同事看到我写了一句小排序的时候说,他当然喜欢Linq了,虽然我只是baidu之,不知其然也不知其所以然。
基本格式 var<变量> = from <项目> in <数据源> where <表达式> orderby <表达式> select <项目>
1. from & select
static void Main(string[] args)
{
string[] abc = { "a3", "af", "de" };
var result = from a in abc
select a;
foreach (var r in result)
{
Console.WriteLine(r);
}
Console.ReadLine();
}
from为必须子句,select不必须。
多个from子句
static void Main(string[] args)
{
string[] abc = { "a3", "af", "de" };
string[] de = { "af","de" };
var result = from a in abc
from d in de
where a.Contains(d)
select a;
foreach (var r in result)
{
Console.WriteLine(r);
}
Console.ReadLine();
}
2.where
where表示条件,也可有多个。或者省略where用&&连接
static void Main(string[] args)
{
string[] abc = { "a3", "aff", "de" };
string[] de = { "af","de" };
var result = from a in abc
from d in de
where a.Contains(d)
&& a.Length> //where a.Length>2
select a;
foreach (var r in result)
{
Console.WriteLine(r);
}
Console.ReadLine();
}
3.order by
ascending/descending 默认 ascending
static void Main(string[] args)
{
string[] abc = { "a3", "aff", "de" };
string[] de = { "af","de" };
var result = from a in abc
from d in de
where a.Contains(d)
orderby a.Length descending
select a;
foreach (var r in result)
{
Console.WriteLine(r);
}
Console.ReadLine();
}
4.group by
在LINQ中,group对from语句进行分组,返回元素类型为IGrouping<TKey,TElement>的对象序列,因此每个返回需再次循环。
如下:
static void Main(string[] args)
{ string[] xyz = { "a", "bc", "def" };
var x = from o in xyz
group o by o.Length;
foreach (var m in x)
{
Console.Write(m.Key);
foreach (var p in m) Console.WriteLine(p);
}
Console.ReadLine();
}
注意 group的语法为group x by y, 同时group在使用时,末尾没有select。
5. into
INTO 创建临时标识符用于保存查询的集合。
static void Main(string[] args)
{
string[] xyz = { "a", "bc", "def" };
var x = from o in xyz
group o by o[] into z
select z; foreach (var m in x)
{
Console.Write(m.Key);
foreach (var p in m) Console.WriteLine(p);
}
Console.ReadLine();
}
我知道这个例子略显神经,可是白痴的我还没发现into语句究竟干嘛用,也许,明天的明天,我就会发现了。
因为——只要在路上,总会遇到庆典~
LINQ 基本子句之一 (select/where/group/into)的更多相关文章
- LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法
介绍 ·Select - Select选择:延迟 ·Where - Where查询:延迟 ·OrderBy - 按指定表达式对集合正序排序:延迟 ·OrderByDescend ...
- .NET 3.5(5) - LINQ查询操作符之Select、Where、OrderBy、OrderByDescending
.NET 3.5(5) - LINQ查询操作符之Select.Where.OrderBy.OrderByDescending 介绍 ·Select - Select选择:延迟 ·Where ...
- mysql---select的五种子句学习(where、group by、having、order by、limit)
mysql---select的五种子句学习(where.group by.having.order by.limit) 分类: Mysql学习2012-09-27 16:14 1533人阅读 评论 ...
- Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
Linq基础操作之Select,Where,OrderBy,ThenBy源码分析 二:Select 它是延迟执行.yield有得一拼,因为他们都是生成了一个枚举类. if (source is TSo ...
- LINQ to SQL语句(6)之Group By/Having
适用场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group ...
- LINQ-Where子句与select子句
1.Where子句 where子句的作用就是筛选元素,除了开始喝结束位置,where子句几乎可以出现在LINQ表达式的任意位置.一个LINQ表达式中可以有Where子句,也可以没有:可以有一个,可以有 ...
- 从linq的一次优化实践看group by+Min/Max()处理数据后需要额外的其他列问题
问题简化如下: 假设有第三方的表结构如下(可能会出现完全相同的重复数据): 1.写SQL语句,查询每个学生的,userid.最高分.最高分的科目.最高分的考点.最低分.最低分科目.最低分考点(分数相同 ...
- Linq 构造复杂Json 多表group by
一个主表A(a1,a2),子表B(a1,b1,b2) ,想得到的结果是 [{a1,a2,Info [{b1,b2},{b1,b2},...}]] var list= from a in A join ...
- LINQ 基本子句之三 let
let子句,可以作为临时变量储存表达式的结果,但是let子句一旦初始化后无法再次进行更改. 1. static void Main(string[] args) { string[] names = ...
随机推荐
- js面向对象编程:if中能够使用那些作为推断条件呢?
在全部编程语言中if是最长用的推断之中的一个.但在js中究竟哪些东西能够在if中式作为推断表达式呢? 比如怎样几行,仅仅是少了一个括号.真假就全然不同.究竟表示什么含义呢 var obj={}; ...
- Ubuntu+Eclipse+ADT+Genymotion+VirtualBox开发环境搭建
1.Eclispe安装就不说了 2.以下说说怎样安装ADT插件.有两种途径: (1)在线安装: 地址:https://dl-ssl.google.com/android/eclipse/(只是近期天朝 ...
- 设计模式入门之职责链模式Chain Of Responsibility
//职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. //实例:申请费用的功能,不同金额的费 ...
- Android studio教程:[3]修改背景主题
android studio开发环境的背景主题是可以更改的,现在都流行黑色背景,这样让软件显得更高端大气的,更加赏心悦目,但最主要的还是看起来更舒适更顺眼.下面就教大家如何更改背景主题. 工具/原料 ...
- sublime 前端开发工具
http://code.kpman.cc/2014/10/14/sublime-text-3-mac-%E6%8C%87%E5%8D%97/ gif 屏幕录制:http://recordit.co/ ...
- Android 判断文件的类型
import java.util.HashMap; import java.util.Iterator; /** * 判断文件的类型 */ public class MediaFileUtil { p ...
- HDU 1046 - Gridland
果然是数学题 #include <iostream> #include <cstdio> #include <cmath> using namespace std; ...
- CATCell <——>CATPoint
假定原先有CATCell tCell; CATVertex_var spVertex = tCell; CATPoint_var spPoint = spVertex -> GetPoint() ...
- C++程序设计实践指导1.7超长数列中n个数排序改写要求实现
改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...
- Intent七在属性之一:ComponentName
注:在<疯狂android讲义>中,此属性称为Component,官方文档中称为ComponentName. 1.The name of the component that should ...