c#中的linq二

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LinqInfo
{
public class Stu
{
public int ID { set; get; } public string Name { get; set; } public string Tel { get; set; } public string Address { get; set; }
} public class GradeInfo
{
public int StuID {get;set; }
public string Course{get;set;}
public int grade{get;set;} }
class Program
{
static void Main(string[] args)
{
List<Stu> list = new List<Stu>()
{
new Stu{ID=,Name="jack1",Tel="",Address="ChengDu"},
new Stu{ID=,Name="jack2",Tel="",Address="ChengDu"},
new Stu{ID=,Name="jack3",Tel="",Address="ChengDu"},
new Stu{ID=,Name="jack4",Tel="",Address="ChengDu"},
new Stu{ID=,Name="jack5",Tel="",Address="ChengDu"} }; //where 关键字
var query =
from li in list
where li.Name == "jack1"
select li;
//order by关键字的
//ascending 升序
//descending 降序
var query1 =
from s in list
orderby s.ID ascending
select s;
//group by的使用
var query2 =
from s in list
group s by s.Address into g
select g;
//group by 求最大值
var max =
from s in list
group s by s.Address into g
select new {
g.Key, //分组字段
MaxId=g.Max(p=>p.ID) //最大的ID
}; //group by 求最小值
var min =
from s in list
group s by s.Address into g
select new {
g.Key,
MidId=g.Min(p=>p.ID)
}; //group by 平均值
var avg =
from s in list
group s by s.Address into g
select new
{
g.Key,
avgInfo = g.Average(p => p.ID)
};
//group by 求和
var sum =
from s in list
group s by s.Address into g
select new
{
g.Key,
Sum=g.Sum(p=>p.ID)
};
//这些就是group by 的基本使用滴呀; //接下来就是各种连接滴呀;
List<GradeInfo> gradeList = new List<GradeInfo>()
{
new GradeInfo(){StuID=,Course="语文",grade=},
new GradeInfo(){StuID=,Course="英语",grade=},
new GradeInfo(){StuID=,Course="数学",grade=},
new GradeInfo(){StuID=,Course="语文",grade=},
new GradeInfo(){StuID=,Course="英语",grade=},
new GradeInfo(){StuID=,Course="数学",grade=},
//模拟错误数据
new GradeInfo(){StuID=,Course="wrong",grade=}
}; //然后再来我们的各种连接查询滴呀;
var innerJoin =
from s in list
join g in gradeList
on s.ID equals g.StuID
select new
{
Name=s.Name,
Grade=g.grade
}; //左连接;
var leftJoin =
from s in list
join g in gradeList
on s.ID equals g.StuID into joinData
from g in joinData.DefaultIfEmpty()
select new
{
Name=s.Name,
Grade= g!=null ? g.grade: //返回相同的数据类型;
}; //整体来说,再数据赛选上的效果是挺不错滴呀; //右连接; 其实左连接 和右 连接是一个相对的概念;
var rightJoin =
from g in gradeList
join s in list
on g.StuID equals s.ID into joinData
from s in joinData.DefaultIfEmpty()
select new
{
Grade=g.grade,
Name=s!=null?s.Name:""
}; var result = rightJoin;
//最后在附带一中linq分页的方法;
var val = (from u in list
orderby u.ID ascending
select u).Skip().Take();
//每页两条,第二页
/*
*
* var q=query.take(n) 这样只能取出前条n记录,
* 但是还是让我们看到了分页的曙光,还是还有个skip吗,
* skip可以取出除去满足条件的剩下的记录。
* 如果我们要把数据以每页pagesize的数量来进行分页,
* 很简单,很skip(pagersize*pagenum)然后在剩下的记录中take(pagesize)不就得到了想要的数据了么。
*
* */
var xx = val; Console.WriteLine("over");
Console.ReadLine();
} }
}

c#中的linq二的更多相关文章

  1. C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...

  2. C#中的线程二(Cotrol.BeginInvoke和Control.Invoke)

    C#中的线程二(Cotrol.BeginInvoke和Control.Invoke) 原文地址:http://www.cnblogs.com/whssunboy/archive/2007/06/07/ ...

  3. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  4. IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)

    问题描述: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 中最大的是: 4 5 9 10   分析: 2*2子数组的最大和.遍历求和,时 ...

  5. C++中的异常处理(二)

    C++中的异常处理(二) 标签: c++C++异常处理 2012-11-24 20:56 1713人阅读 评论(2) 收藏 举报  分类: C++编程语言(24)  版权声明:本文为博主原创文章,未经 ...

  6. c#中的linq一

    c#中的linq 测试数据: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  7. Expert C# 5.0中的Linq部分

    1.先看看.NET中的Linq 2.扩展方法 3.Lambda表达式和表达式树 4.Linq中的延迟操作 5.Linq中的查询方法 5.1分割操作 5.2连接操作 5.3排序操作 5.4分组和连接 5 ...

  8. 在VB中使用Linq To SQLite注意事项

    昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...

  9. VB.NET中使用Linq TO SQL添加数据后获得自增长列ID

    VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...

随机推荐

  1. windows环境下nginx的启动、停止

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...

  2. JSON.stringify语法解析(自己留存)

    语法: JSON.stringify(value [, replacer] [, space]) value:是必选字段.就是你输入的对象,比如数组,类等. replacer:这个是可选的.它又分为2 ...

  3. Hibernate批处理操作优化 (批量插入、更新与删除)

    问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工 ...

  4. asp.net 微信企业号办公系统-流程设计--保存与发布

    如果流程未设计完时可以先保存,以后再打开接着设计.点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计,则可以打开该流程继续设计: 如果流程设计完成,可以点击安装按钮来发布流程,流程安装成 ...

  5. Java如何获取系统cpu、内存、硬盘信息

    1 概述 前段时间摸索在Java中怎么获取系统信息包括cpu.内存.硬盘信息等,刚开始使用Java自带的包进行获取,但这样获取的内存信息不够准确并且容易出现找不到相应包等错误,所以后面使用sigar插 ...

  6. Symantec更新服务器

    HTTP liveupdate.symantec.com liveupdate.symantecliveupdate.com   FTP update.symantec.com/opt/content ...

  7. 【液晶模块系列基础视频】3.2fatfs接口函数的使用2

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...

  8. CSS系列:表达式(Expression)`淘汰`

    概述 CSS表达式是动态设置CSS属性的强大(但危险)方法.Internet Explorer从第5个版本开始支持CSS表达式. 兼容性 expression方法在其它浏览器中不起作用,因此在跨浏览器 ...

  9. DS实验题 Searchname

    题目: 思路: 如果直接暴力搜索的话,时间复杂度为O(n*m),在n为百万量级的情况下,必然是T. 所以,这里通过hash函数,将字符串转换为对应的hash值:同时利用邻接表避免了hash冲突,方法是 ...

  10. Centos Apache安装eAccelerator

    yum install php-eaccelerator