一、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

最新文章

  1. iOS 应用数据存储方式(XML属性列表-plist)
  2. sublime代码片段
  3. Sklearn库例子——决策树分类
  4. C(C++)输入输出格式
  5. .assetbundle 和.unity3d 好处
  6. python import eventlet包时提示ImportError: cannot import name eventlet
  7. &quot;由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断&quot;的解决方案
  8. MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)
  9. [C语言 - 13] 运算符
  10. 折叠UITableView分组实现方法
  11. 用纯CSS实现的箭头
  12. 浅谈扩展欧几里得算法(exgcd)
  13. os和sys模块的区别及其常用方法总结
  14. vue爬坑:把对象中的数据给了某个变量,改变一个对象的值,另一个对象也变化
  15. 【Web】servlet、filter和listener
  16. BZOJ4076 : [Wf2014]Maze Reduction
  17. Java知多少(28)super关键字
  18. EF使用sql语句
  19. 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
  20. Mininet入门与实战 3.9参课记录

热门文章

  1. 算法 python实现(二) 冒泡排序
  2. 基于WCF大型分布式系统的架构设计
  3. FZU 2213 Common Tangents 第六届福建省赛
  4. (已解决 7.8号)leecode 分词利用词典分词 word break
  5. JSP页面同时操作所有Input输入框
  6. Linux程序设计(二)shell程序设计
  7. PC-[WIN7]此计算机无法联接家庭组
  8. linux内核--页高速缓存
  9. BA Practice Lead Handbook 1 - Why Is Business Analysis Taking The World By Storm?
  10. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】