LINQ 操作符(二)

using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lambda表达式
{
class Program
{
static void
Main(string[] args)
{

}
static List<Person> GetPersonList()

{
return new List<Person>() {
new Person
(){ Age =1,Name ="小白01",ID=1,Gender =true},
new Person (){Age
=2,Name ="小白02",ID=2,Gender =false},
new Person (){Age =3,Name
="小白03",ID=3,Gender =true}
};
}

static List<PersonToy> GetPersonToyList()
{

return new List<PersonToy>() {
new PersonToy(){
PersonToyID=1,Name="小明"},
new PersonToy (){PersonToyID =2,Name ="小白"},
new
PersonToy (){PersonToyID =3,Name ="小红"},
new PersonToy (){PersonToyID =4,Name
="小黑"}
};
}

#region Lambda表达式
/// <summary>
///
Lambda表达式和Lambda语句
/// </summary>
static void
TestLambda()
{
List<Person> list =
GetPersonList();
list.ForEach(d =>
Console.WriteLine(d.Name));
//Lambda表达式
list.FindAll(d =>
d.Age > 1);
list.Sort((x, y) => x.Age - y.Age);

var it = list.Select(p => new smallperson { Name = p.Name });

//语句Lambda语句
var it1 = list.Select(p =>
{
//如果存在多个语句就不能省略{}大括号 也不能省略return
smallperson sp = new
smallperson();
sp.Name = p.Name;
return
sp;
});
}
#endregion

/// <summary>
/// 标准查询方法 ----Where查询
///
</summary>
static void SQOWhere()
{

List<Person> list = GetPersonList();

//在集合中筛选出符合条件的数据
List<Person> list2 = list.Where(p => p.Gender ==
false && p.Age > 1 && p.Age < 3).ToList();

list.ForEach(p => Console.WriteLine(p.Name));
}

/// <summary>
/// 标准查询运算符 select
投射方法(返回一个新的集合)
/// </summary>
static void SQOSelect()

{
List<Person> list = GetPersonList();

List<smallperson> list2 = list.Where(p => p.Gender == false).Select(p
=> new smallperson() { Name = p.Name }).ToList();
}

/// <summary>
/// 标准查询运算符 Order 排序方法
返回一个新的集合
/// </summary>
static void SQOOrder()

{
List<Person> list = GetPersonList();

List<Person >listSorted= list.OrderBy(p =>
p.Age).ThenByDescending(p=>p.ID ).ToList ();//按照年龄进行排序(升序)
// list
.OrderByDescending 倒序

list.ForEach(p=>Console .WriteLine(p.Age.ToString ()));
}

/// <summary>
/// 标准运算符--连接集合
///
</summary>
static void TestJoin()
{

List<Person> listperson = GetPersonList();

List<PersonToy> listPersontToy = GetPersonToyList();
var
listJoin= listperson .Join
(listPersontToy,d=>d.ID,t=>t.PersonToyID,(d,t)=>new {ID=d.ID
,ToyName=t.Name,Name=d.Name}).ToList ();

listJoin.ForEach(a=>Console .WriteLine (a.ID.ToString
()+","+a.ToyName));
}

/// <summary>
/// 标准查询运算符 GroupBy为集合分组
///

/// </summary>
static void SQOGroupBy()
{

List<Person> list = GetPersonList();

//按照性别进行分组
IEnumerable <IGrouping <bool ,Person >>it=
list.GroupBy(p => p.Gender);

//根据姓名进行分组
IEnumerable<IGrouping<string, Person>>
it2 = list.GroupBy(p=>p.Name );
// var it2=
list.GroupBy(p=>p.Name );

IList<IGrouping<bool, Person>> listGroup =
it.ToList();
foreach (var group in listGroup)
{

Console.WriteLine(group .Key.ToString ());

foreach (var item in group)
{

Console.WriteLine(item .Name +","+item .Age);
}

Console.WriteLine("------------------------------------");

}
}

/// <summary>
/// 标准运算符=Skip -Take分页数据
///
</summary>
static void SQOPagedList()
{

List<Person> list = GetPersonList();
}

/// <summary>
///Linq语句 ,编译后会生成对应的标准查询 运算符
linq是一种类似sql的一种更加友好的语法糖 语法而已
/// </summary>
static void
TestLinq()
{
List<Person> list =
GetPersonList();

List<PersonToy>listtoy=GetPersonToyList();
var query = from
li in list select li;//从老集合中每一个元素 存入一个新的集合
//where
var query1
= from li in list where li.Gender == true select li;
//order
descending倒序 aescending正序
var query2 = from li in list orderby li.Gender
orderby li.Age descending select li;
//join链接查询
var
query3=from li in list join t in listtoy on li .ID equals t.PersonToyID select
new {Name=li .Name };
//分组查询
var query4 = from li in list
group li by li.Gender;

}

}
public class smallperson
{
public string Name
{ get; set; }
}
}

时间: 05-20

LINQ 操作符(二)的相关文章

LINQ操作符二:SelectMany

SelectMany操作符提供了将多个from子句组合起来的功能,相当于数据库中的多表连接查询,它将每个对象的结果合并成单个序列. 示例: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace SelectMany操作符 8 { 9 class Program 10 { 1

LINQ:开始使用 LINQ(二)- 基本 LINQ 查询操作

开始使用 LINQ (二)- 基本 LINQ 查询操作 一.获取数据源:from 在 LINQ 查询中,第一步是指定数据源.像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它.在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 (customers) 和范围变量 (cust). 1 //queryAllCustomers 是 IEnumerable<Cutsomer> 类型 2 var queryAllCustomers = from cust in custom

Linq学习(二)-LinQ to Entity

在昨天我学习了LinQ的一些基础知识和动手写了一些LinQ to Object的例子的基础上,对于LinQ语法和基本的要点有了一定的了解.今天继续自己的学习,对于今天学习的LinQ to DataSet 和LinQ to Entity做自己的一些总结,一方面加深自己的理解,另一方面也能掌握LinQ技术的实现机制,对于也跟我一样对着一方面有兴趣的也可以让大家有个初步的感性认识,也是好的. 今天主要的篇幅会讲解LinQ to Entity的C#实现机制以及解决昨天我看完一小节之后的两点疑惑,后面会花

JAVA编程思想(2) - 操作符(二)

5. 直接常量 -一般来说,如果程序里使用了"直接常量",编译器可以准确的知道要生成什么样的类型,但有时候却是模棱两可的.这时候需要我们对编译器进行适当的"指导" -直接常量后面的后缀字符标示了它的类型. -指数记数法:e代表"10的幂次" -注意如果编译器能够正确的识别类型,就不必在数值后附加字符,例如语句: float f4 = 200; 不存在含糊不清的地方,所以200后面不需要加L,但是对于:float f4 = 1e-43f; 编译器通

LINQ操作符一:Select

一.什么是LINQ?它可以用来做什么 语言集成查询(Language Integrated Query,LINQ)是一系列标准查询操作符的集合,这些操作符几乎对每一种数据源的导航.过滤和执行操作都提供了底层的基本查询架构. LINQ可查询的数据源包括XML(可使用LINQ TO XML).关系数据(使用LINQ TO SQL,及先前的DLINQ).ADO.NET DataSet(使用LINQ TO DataSet),以及内存中的数据. 二.投影操作符:Select Select操作符对单个序列或

【LINQ技术】扩展特性和LINQ操作符

LINQ特有的编程结构 LINQ就像是嵌入到C#中的强类型查询语言,尽管和SQL查询很像,但语法却并不相同,甚至还有截然相反的一面. LINQ是在.NET发展到3.5版的时候被引进的,C#和VB语言都为此做了许多工作,扩展了大量新的编程结构. 一.隐式类型本地变量 var--一个如此小巧的关键字却有着强大的力量. var varInt=1; var varBool=True; var varString="String, String, String"; Console.WriteLi

LINQ操作符四:排序操作符

排序操作符,包括OrderBy.OrderByDescending.ThenBy.ThenByDescending和Reverse,提供了升序或者降序排序. OrderBy操作符将序列中的元素按照升序排列. 注意:orderby必须在select之前出现,查询表达式最后只可能出现select或者groupby. student类: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using Sy

linq操作符:聚合操作符

一.Aggregate操作符 Aggregate操作符对集合值执行自定义聚合运算.来看看Aggregate的定义: 1 public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func); 2 public static TAccumulate Aggregate<TSource, TAccumulate&g

linq操作符:转换操作符

这些转换操作符将集合转换成数组:IEnumerable.IList.IDictionary等.转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以"As"开头的转换方法可更改源集合的静态类型但不枚举(延迟加载)此源集合.名称以"To"开头的方法可枚举(即时加载)源集合并将项放入相应的集合类型. 一.AsEnumerable操作符 所有实现了IEnumerable<T>接口的类型都可以调用此方法来获取一个IEnumerable<T>集合