c#中的linq二
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二的更多相关文章
- C#中的Linq to Xml详解
这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...
- C#中的线程二(Cotrol.BeginInvoke和Control.Invoke)
C#中的线程二(Cotrol.BeginInvoke和Control.Invoke) 原文地址:http://www.cnblogs.com/whssunboy/archive/2007/06/07/ ...
- C语言中如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...
- IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)
问题描述: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 中最大的是: 4 5 9 10 分析: 2*2子数组的最大和.遍历求和,时 ...
- C++中的异常处理(二)
C++中的异常处理(二) 标签: c++C++异常处理 2012-11-24 20:56 1713人阅读 评论(2) 收藏 举报 分类: C++编程语言(24) 版权声明:本文为博主原创文章,未经 ...
- c#中的linq一
c#中的linq 测试数据: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- Expert C# 5.0中的Linq部分
1.先看看.NET中的Linq 2.扩展方法 3.Lambda表达式和表达式树 4.Linq中的延迟操作 5.Linq中的查询方法 5.1分割操作 5.2连接操作 5.3排序操作 5.4分组和连接 5 ...
- 在VB中使用Linq To SQLite注意事项
昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...
- VB.NET中使用Linq TO SQL添加数据后获得自增长列ID
VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...
随机推荐
- Oracle中Clob类型处理解析
最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的 ...
- [shell] if else以及大于、小于、等于逻辑表达式 [转]
本文也即<Learning the bash Shell>3rd Edition的第五章Flow Control之读书笔记,但我们将不限于此.flow control是任何编程语言中很常用 ...
- 使用Spring的注解方式实现AOP
Spring对AOP的实现提供了很好的支持.下面我们就使用Spring的注解来完成AOP做一个例子. 首先,为了使用Spring的AOP注解功能,必须导入如下几个包.aspectjrt.jar,asp ...
- virt-manage图形界面键盘错位问题
键盘错乱问题: 启动引导问题:
- Swift UICollectionView 简单使用
最近要研究下排布的游戏关卡界面的实现,简单做了个UICollectionView的demo. 先看最后的效果: 下面来看实现的方法把,在Storyboard对应的ViewController中增加一个 ...
- 通过ReflectionMethod,我们可以得到Person类的某个方法的信息
PHP反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互.借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传 ...
- eclipse安装swing插件
最近想用java做个小应用,是那种可视化图形类的应用.因为一直比较懒,所以打算用swt拖拖拽拽.于是在就去找swt,这是以前的办法.结果发现原来最新版的eclipse自己带有一个windowbuild ...
- QuickStart OpenvirteX
参考:ubuntu14.04安装OpenVirteX 预准备: Java 7 sudo add-apt-repository ppa:webupd8team/java sudo apt-get upd ...
- xenserver+starwind架构布署
主机 CPU 和主板均需支持 INTER-VT/ AMD-VT ,主板默认可能没开 进BISO开启 下载最新的 xenserver ,授权注册一下 轻松得到授权文件 (鄙视一下VMWARE,看人家 ...
- lvs简单配置
负载均衡服务器将会用到两块网卡,eth0为公网地址(此处将局域网ip作为公网地址),IP地址为192.168.1.104,eth0:1,IP地址为192.168.2.1在负载均衡器上添加一个ip别名, ...