一、Partitioning 分区

Take

例1:取前3个数

 static void Linq1()
{
int[] numbers = { , , , , , , , , , };
var first3Numbers = numbers.Take();
Console.WriteLine("前3个数:");
foreach (var n in first3Numbers)
{
Console.WriteLine(n);
}
}

Skip

例2:跳过前3个数

 static void Linq2()
{
int[] numbers = { , , , , , , , , , };
var skip3Numbers = numbers.Skip();
Console.WriteLine("除去前3个数后数字:");
foreach (var n in skip3Numbers)
{
Console.WriteLine(n);
}
}

Take + Skip 实现分页

 int currentPageIndex;  // 当前页号
int pageSize;      // 每页有多少条记录
source 是总数据源集合 则用LINQ分页的代码为 var query = source.Skip((currentPageIndex-) * pageSize).Take(pageSize);

二、Join

例1: Cross Join

 static void Linq3()
{
string[] cates = {"酒类","烟类","肉类" };
var products = Product.GetDefaultData(); // CategoryName 没有与 cate 匹配的将被剔除
var query = from c in cates
join p in products on c equals p.CategoryName
select new { ShowName = c + " : " + p.ProductName }; foreach (var item in query)
{
Console.WriteLine(item.ShowName);
}
} public class Product
{
public string CategoryName { get; set; }
public string ProductName { get; set; } public static List<Product> GetDefaultData()
{
return new List<Product>
{
new Product{ CategoryName="烟类", ProductName="中华"},
new Product{ CategoryName="酒类", ProductName="白酒"},
new Product{ CategoryName="酒类", ProductName="红酒"},
new Product{ CategoryName="肉类", ProductName="猪肉"},
new Product{ CategoryName="肉类", ProductName="牛肉"},
new Product{ CategoryName="零食", ProductName="饼干"},
new Product{ ProductName="暂未分类产品1"},
new Product{ ProductName="暂未分类产品2"},
};
}
}

例2: Group Join

 static void Linq4()
{
string[] cates = { "酒类", "烟类", "肉类" };
var products = Product.GetDefaultData(); var query = from c in cates
join p in products on c equals p.CategoryName
into tgroup
select new { Name = c, Group = tgroup }; foreach (var item in query)
{
Console.Write("{0}: ",item.Name);
foreach (var g in item.Group)
{
Console.Write("{0} ",g.ProductName);
}
Console.WriteLine();
}
}

例3:Cross Join + Group Join

分组后再查询符合条件的

 static void Linq5()
{
string[] cates = { "酒类", "烟类", "肉类" };
var products = Product.GetDefaultData(); var query = from c in cates
join p in products on c equals p.CategoryName
into tgroup
from g in tgroup
where g.ProductName.Contains("牛腩") // 仅要产品名字含有牛腩的分组
select new { Name = c, Group = tgroup }; foreach (var item in query)
{
Console.Write("{0}: ", item.Name);
foreach (var g in item.Group)
{
Console.Write("{0} ", g.ProductName);
}
Console.WriteLine();
}
}

例4 Left Outer Join

 static void Linq6()
{
string[] cates = { "酒类", "烟类", "肉类" ,"调料类"};
var products = Product.GetDefaultData(); var query = from c in cates
join p in products on c equals p.CategoryName
into tgroup
from g in tgroup.DefaultIfEmpty()
select new { Name = c, ProductName = g==null ? "该分组下没有内容":g.ProductName }; foreach (var item in query)
{
Console.WriteLine("{0} {1}",item.Name,item.ProductName);
}
}

三、 聚合

Count();

Count(n => 条件); 后面都类似

Sum();

Min()

Max()

Average()

本文代码:http://files.cnblogs.com/Aphasia/ConsoleApplication2.rar

LINQ 101——分区、Join、聚合的更多相关文章

  1. LINQ 101——约束、投影、排序

    什么是LINQ:LINQ 是一组 .NET Framework 扩展模块集合,内含语言集成查询.集合以及转换操作.它使用查询的本机语言语法来扩展 C# 和 Visual Basic,并提供利用这些功能 ...

  2. LINQ 101——分组、Set、转换、Element

    一.Grouping(分组) 例1:对于0-9数按被3整除的结果分组 代码: static void Linq1() { , , , , , , , , , }; var numModBy3 = fr ...

  3. LINQ学习笔记 Join 与 Group join

    LINQ中的Join对应T-SQL中的内连接,并无左连接的方法,当然也没有右连接. 要达成Left join必须依靠GroupJoin来完成. GroupJoin顾名思义就是先集团在做加入,加入的不同 ...

  4. LINQ查询表达式---------join子句

    LINQ查询表达式---------join子句 join 子句接受两个源序列作为输入. 每个序列中的元素都必须是可以与另一个序列中的相应属性进行比较的属性,或者包含一个这样的属性. join子句使用 ...

  5. 9.2.3 hadoop reduce端连接-分区分组聚合

    1.1.1         reduce端连接-分区分组聚合 reduce端连接则是利用了reduce的分区功能将stationid相同的分到同一个分区,在利用reduce的分组聚合功能,将同一个st ...

  6. 深入调研Linq to Objects Join Linq to Entity

    最近工作中遇到数据库组合查询带来的一些问题,因此有必要调研一下Linq to Objects Join Linq to Entity.参考一些网友的代码案例,深入实践了一下使用EntityFramew ...

  7. LINQ系列:LINQ to SQL Join连接

    1. 一对多 var expr = context.Products .Where(p => p.Category.CategoryName == "LINQ to SQL" ...

  8. .NET LINQ 数据分区

    数据分区      LINQ 中的分区指的是在不重新排列元素的情况下,将输入序列划分为两部分,然后返回其中一个部分的操作.      下图显示对一个字符序列执行三个不同的分区操作的结果. 第一个操作返 ...

  9. EF架构~linq模拟left join的两种写法,性能差之千里!

    回到目录 对于SQL左外连接我想没什么可说的,left join将左表数据都获出来,右表数据如果在左表中不存在,结果为NULL,而对于LINQ来说,要实现left join的效果,也是可以的,在进行j ...

随机推荐

  1. HDOJ/HDU 1015 Safecracker(枚举、暴力)

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  2. 传输层之TCP

    ---恢复内容开始--- 坞无尘水槛清,相思迢递隔重城. 秋阴不散霜飞晚,留得枯荷听雨声.    --李商隐 上一篇中我们了解了socket编程是基于TCP或者UDP,所以我们有必要对TCP,和UDP ...

  3. SRM 442(1-250pt, 1-500pt)

    DIV1 250pt 题意:将一个数表示成质因子相乘的形式,若乘式所含数字的个数为质数,则称A为underprime.比如12 = 2*2*3,则含3个数字,是underprime.求A, B之间un ...

  4. Linux下动态调整LVM文件系统大小

    LINUX下可以通过LVM动态调整一个已挂载的文件系统大小 LV可以根据需求增大或减小,但是LV改变大小以后,在LV中的文件系统也需要相应的改变大小.这个概念非常重要,如果没有相应的调整LV中文件系统 ...

  5. 深入理解 Spring 事务原理

    本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 一.事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供 ...

  6. UVA 10194 Football (aka Soccer)

     Problem A: Football (aka Soccer)  The Problem Football the most popular sport in the world (america ...

  7. css写法效率问题

    这篇文章写的很好了,其实大多数很牛的博客,都是对国外文献的翻译,国内文章的好坏,关键取决于翻译者理解和翻译水平. https://developer.mozilla.org/en-US/docs/We ...

  8. div+css的兼容性问题和解决方法

    1. 默认的内外边距不同 问题: 各个浏览器默认的内外边距不同 解决: *{margin:0;padding:0;}   2. 水平居中的问题 问题: 设置 text-align: center    ...

  9. android关机充电

    1.关机充电其实是进入adb shell很快的方式! 2.手机关机时候插入USB,手机将进入关机充电模式,那么这个模式究竟是怎么进行的,这里分析如下! (1)uboot:这里代码大概浏览了一下:u-b ...

  10. Ajax-$.ajax()方法详解

    jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...