---恢复内容开始---

本文不想罗列linq的通俗使用方法。因为很多博文都已经写得很详细了。

此处直接贴出源码,如果有需要的朋友可以参考,希望更多的朋友能够补充更多的linq的高级应用。

源码如下:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; namespace linq
{
class Program
{
static void Main(string[] args)
{
Person[] ps = {
new Person{Name="jack",Age=,Phone="",PID=},
new Person{Name="tom",Age=,Phone="235asdg64",PID=},
new Person{Name="jerry",Age=,Phone="235dasg64",PID=},
new Person{Name="lily",Age=,Phone="23asdg564",PID=}
};
Animal[] ana = {
new Animal{AID=,Name="dog",PID=},
new Animal{AID=,Name="cat",PID=},
new Animal{AID=,Name="dog",PID=},
new Animal{AID=,Name="chicken",PID=},
new Animal{AID=,Name="dog",PID=},
new Animal{AID=,Name="dog",PID=},
new Animal{AID=,Name="cat",PID=},
new Animal{AID=,Name="cat",PID=}
};
Console.WriteLine("----------------分组排序------------------------");
//分组
var result = from p in ps
group p by p.Age into g//根据p的值对p进行分组,每组放入g变量中
orderby g.Count() descending
//g.Key为每一组的“组标识”(比如根据年龄groupby,年龄就是组标识)
select new { Name = g.Key, Count = g.Count() };
ps.Where(p => p.Age > );
foreach (var p in result)
{
Console.WriteLine("年龄为:"+p.Name + "的人数是:" + p.Count);
} Console.WriteLine("----------------等值连接------------------------");
//连接 多表查询---下面为等值连接即内连接
var data = from p in ps
join a in ana on p.PID equals a.PID
select new {PID=p.PID,PName=p.Name,PAge=p.Age,PPhone=p.Phone,AID=a.AID,AName=a.Name };
foreach (var item in data)
{
Console.WriteLine(item.PID+"--"+item.PName+"--"+item.PAge+"--"+item.PPhone+"--"+item.AID+"--"+item.AName);
}
Console.WriteLine("----------------左连接------------------------");
//左连接的写法
var data1 = from p in ps
join a in ana on p.PID equals a.PID
into temp //临时表
from t in temp.DefaultIfEmpty()
select new { PID = p.PID, PName = p.Name, PAge = p.Age, PPhone = p.Phone, AID =( t!=null?t.AID:), AName = (t!=null?t.Name:"null")};
foreach (var item in data1)
{
Console.WriteLine(item.PID + "--" + item.PName + "--" + item.PAge + "--" + item.PPhone + "--" + item.AID+ "--" + item.AName);
} //lamba本质剖析
var d1 = from p in ps
where p.Age>
select p;
//Where,Select等均为IEnumerable接口的扩展方法
var d2 = ps.Where(p => p.Age > ).Select(p => p);
var d3 = ps.Where(p => p.Age > );
var d4 = ps.Where((p) => p.Age > );
//其实where方法内的参数是一个匿名方法或者说是匿名委托 var p=function(parameter){return i>0}
//系统委托 public delegate TResult Func<in T, out TResult>(T arg);
//当只有一个参数,方法内只有一行代码时可以简写为 var d3 = ps.Where(p => p.Age > 30);
var d5 = ps.Where((p) => { return p.Age > ; }); //lamba在多线程中的应用
//i => { Console.WriteLine("hhh" +i); }就是一个匿名方法或者说匿名委托
//Thread t1 = new Thread(i => { Console.WriteLine("hhh" +i); });
Thread t1 = new Thread((i) => { Console.WriteLine("我是多线程委托实现:" + i); });
t1.Start(); //匿名委托的实现方式
//DelFun dfun=delegate(int i){Console.WriteLine(i);};
DelFun dfun = (i => { Console.WriteLine("我是匿名委托:"+i); });
dfun(); Console.Read();
}
delegate void DelFun(int i);
class Person
{
public int PID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
}
class Animal
{
public int AID { get; set; }
public string Name { get; set; }
public int PID { get; set; } }
}
}

LINQ的高级应用的更多相关文章

  1. Linq(高级查询)

    一.条件查 public List<Users> ss(string ids) { List<Users> ulist=new List<Users>(); 声明使 ...

  2. LINQ 【高级查询】

    using (Data0216DataContext con = new Data0216DataContext()) {      List<Users> ulist = con.Use ...

  3. LinQ的高级查询

    模糊查询: //数据库 + 自定义名称 =new 数据库 //例子: mydbDataContext con = new mydbDataContext(); //模糊查询表达式中用.Contains ...

  4. 2017年12月14日 LinQ高级查&&Asp.net WebForm Asp.net MVC

    LinQ的高级查询用法 开头:StartsWith()结尾:EndsWith()模糊:Contains() 个数:Count最大值:Max(r => r.price)最小值:Min(r => ...

  5. C#webform LinQ

    LinQ的高级查询: 模糊查 con.Car.Where(r=>r.Name.Contains(cname)).ToList(); 以..开头 con.car.Where(r => r.n ...

  6. LinQ的查询操作

    LinQ的高级查询:-------------------在car表格进行练习操作: 一.模糊查询:1.在后台代码:(Contains)List<car>list=con.car.wher ...

  7. .NET深入解析LINQ框架2

    1].开篇介绍 在开始看本篇文章之前先允许我打断一下各位的兴致.其实这篇文章本来是没有打算加“开篇介绍”这一小节的,后来想想还是有必要反馈一下读者的意见.经过前三篇文章的详细讲解,我们基本上对LINQ ...

  8. ORM框架学习之EF

    首先推荐一篇很好的EF文章翻译,可以系统的学习一遍. <Entity Framework 6 Recipes>中文翻译系列 EF使用体会 优点: 可以省去Ado.net复杂的管道连接代码. ...

  9. .NET Runtime version 2.0.50727.xxx 执行引擎错误。 (Fatal Execution Engine Error)

    如题问题困扰本人良久. 尝试VS2005.VS2008.VS2010均出现过次问题. 主要现象: 1. Window设计器会崩溃,直接挂掉.(当逐条注释掉一些静态构造函数内的代码是情况好转) 2. 发 ...

随机推荐

  1. ORACLE 查看有多个执行计划的SQL语句

    在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...

  2. php截取字符串函数

    public function sub_string($str, $len, $charset="utf-8") { if( !is_numeric($len) or $len & ...

  3. 0007《SQL必知必会》笔记03-汇总与分组数据

    1.有些时候需要数据的汇总值,而不是数据本身,比如对某些数据求和.计数.求最大最小值.求平均值,因此就有了5个聚集函数:AVE().COUNT().MAX().MIN().SUM(): (1)求平均值 ...

  4. dpkg

    dpkg是debian最早提出的一个软件包管理工具,因为早期并没有考虑到当下软件包之间这么复杂的依赖关系,所以并不能自动解决软件包的依赖问题,这个命令多用于安装本地的.deb软件包,也可以进行软件包的 ...

  5. 高性能MySQL笔记 第6章 查询性能优化

    6.1 为什么查询速度会慢   查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...

  6. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  7. 关于mapreduce.map.java.opts

    a)   Update the property in relevant mapred-site.xml(from where client load the config). b) Import t ...

  8. 【原】一张图片优化5K的带宽成本

    上周,我参加了公司的一门课程<网站性能优化>,讲师提出了一个问题:一张图片优化后减少5K,1年内可以大概省下多少宽带成本呢?非常好奇,仔细听完讲师分析,计算出来的数据让小伙伴们都惊呆了,仅 ...

  9. NOIP2010提高组乌龟棋 -SilverN

    题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...

  10. VIJOS1240 朴素的网络游戏[DP]

    描述 佳佳最近又迷上了某款类似于虚拟人生的网络游戏.在游戏中,佳佳是某旅行团的团长,他需要安排客户住进旅馆.旅馆给了佳佳的旅行团一个房间数的限制.每一个房间有不同的容纳人数和价钱(这个价格是房间的总价 ...