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

本文不想罗列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. ORA-00030: User session ID does not exist.

    同事在Toad里面执行SQL语句时,突然无线网络中断了,让我检查一下具体情况,如下所示(有些信息,用xxx替换,因为是在处理那些历史归档数据,使用的一个特殊用户,所以可以用下面SQL找到对应的会话信息 ...

  2. Maven详细介绍

    Maven 目录 1 什么是Maven? 2 Maven 的好处 3 获取和安装 3.1 获取 3.2 安装 3.2.1 环境变量的配置 4 设置本地仓库 5 创建简单的Maven实例 5.1 使用骨 ...

  3. Android搭建junit测环境

    在AndroidManifest.xml文件中增加两个东西,分别是: 1.uses-library ,位于application里面. 2.instrumentation,与application同级 ...

  4. layout 布局、手风琴accordion、选项卡tabs

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 使用 python 发送邮件

    1.使用python 写发邮箱代码: def sendmail (): import smtplib from email.mime.text import MIMEText from email.u ...

  6. plsql+绿色版oracle连接远程数据库配置及提示缺少msvcr71.dll解决方法

    之前一直用的sqldeveloper连接oracle数据库,这个免费而且也是官方出品,除了体积略大启动略慢外,也没什么不好的.. 一次偶然机会决定试一下plsql,整理一下安装资料,需要本地oracl ...

  7. SonarLint(Sonar) 代码质量管理

    一.Sonar是什么? Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groov ...

  8. NOIP2008传纸条[DP]

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...

  9. AC小笔记

    1:基本库函数的使用 Rand()函数,可以产生0~32767之间的随机数. a+rand()%(b-a)  可以得到 [a,b] 之间的随机数. 2:基本数据类型的使用 可以使用强制类型转换 例如: ...

  10. PHP执行定时任务

    PHP执行定时任务 1.当PHP像文件写入信息的时候 <?php for ($i=0; $i < 10; $i++) { $str="我是第".$i."条&q ...