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 =,Name ="小白01",ID=,Gender =true},
new Person (){Age =,Name ="小白02",ID=,Gender =false},
new Person (){Age =,Name ="小白03",ID=,Gender =true}
};
} static List<PersonToy> GetPersonToyList()
{
return new List<PersonToy>() {
new PersonToy(){ PersonToyID=,Name="小明"},
new PersonToy (){PersonToyID =,Name ="小白"},
new PersonToy (){PersonToyID =,Name ="小红"},
new PersonToy (){PersonToyID =,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 > );
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 > && p.Age < ).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; }
}
}

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

  1. LINQ操作符二:SelectMany

    SelectMany操作符提供了将多个from子句组合起来的功能,相当于数据库中的多表连接查询,它将每个对象的结果合并成单个序列. 示例: student类: using System; using ...

  2. 委托发展史(Linq操作符)

    嗯~这篇就讲讲Linq吧! 之前讲过Lambda最后进化到了令人发指的地步: Func<string, int> returnLength; returnLength = text =&g ...

  3. [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  4. linq操作符:分区操作符

    Linq中的分区指的是在不重新排列元素的情况下,将输入序列划分为两部分,然后返回其中一个部分的操作. 一.Take操作符 Take(int n)表示将从序列的开头返回数量为n的连续元素,常用于分页.其 ...

  5. linq操作符:限定操作符

    限定操作符运算返回一个Boolean值,该值指示序列中是否有一些元素满足条件或者是否所有元素都满足条件. 一.All操作符 All方法用来确定是否序列中的所有元素都满足条件.看下面的例子: using ...

  6. linq操作符:元素操作符

    元素操作符仅返回一个元素. 一.Fitst操作符 First操作符将返回序列中的第一个元素.如果序列中不包含任何元素,则First<T>方法将引发异常.来看看First()方法的定义: 从 ...

  7. linq操作符:转换操作符

    这些转换操作符将集合转换成数组:IEnumerable.IList.IDictionary等.转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以"As"开头的转换方法可更 ...

  8. linq操作符:聚合操作符

    一.Aggregate操作符 Aggregate操作符对集合值执行自定义聚合运算.来看看Aggregate的定义: public static TSource Aggregate<TSource ...

  9. linq操作符:连接操作符

    linq中的连接操作符主要包括Join()和GroupJoin()两个. 一.Join()操作符 Join()操作符非常类似于T-SQL中的inner join,它将两个数据源进行连接,根据两个数据源 ...

随机推荐

  1. JQuery.validate在ie8下不支持解决方案

    一.在ie8下回有问题的代码 1.JQuery.validate验证框架是通过页面form表单提交验证<input/>标签中输入是否符合自己的规则的 <form id="c ...

  2. Code Complete 读后总结和新的扩展阅读计划

    Code Complete 读后总结和新的扩展阅读计划 用了一年时间终于将代码大全读完了,在这里做一个简单的总结,并安排下一阶段的扩展阅读计划. 1.选择代码大全作为我程序员职业入门的第一本书,我认为 ...

  3. PHP学习笔记三十四【记录日志】

    <?php function my_error2($errno,$errmes) { echo "错误号:".$errno; //默认时区是格林威治相差八个时区 //设置 1 ...

  4. 关于降低android手机摄像头预览分辨率

    假设现在有这样一个需求需要一直开着手机摄像头 但是不做任何拍照动作 但是每个手机的相机分辨率都不同 而默认预览的时候参数是最大分辨率 这样有时候就回导致电量损耗的加快 所以我们可以采取降低相机分辨率的 ...

  5. uploadify ,前端页面获取值,json,ajax

    针对这几月的技术,做一次小总结 上传控件uploadify function inexel() { $("#btnExcel").uploadify({ 'method': 'po ...

  6. 关于 jQuery中 function( window, undefined ) 写法的原因

    今天在读 jQuery 源码的时候,发现下面的写法: (function(window,undefined){ ...// code goes here })(window); window 作为参数 ...

  7. Spyder调试错误-"TypeError: decoding Unicode is not supported"

    这是Spyder 2.7.4版本的一个Bug,升级到最新版本(2.7.9)即可. pip install --upgrade spyder Reference: https://github.com/ ...

  8. ASP.NET MVC 4.0 学习6-Model Binding

    一,ViewData,ViewBag與TempData ASP.NET MVC架構中,通過繼承在Controller中的ViewData,ViewBag和TempData和View頁面進行資料的存取, ...

  9. 利用树莓派跑python爬虫的简单教程——从无到有

    因为学校项目的原因入手了树莓派,到手先折腾了两天,发现网上的教程大都是拿他搭建服务器,mail,或者媒体服务器之类,对于在学校限时的宽带来说有点不太现实,不过低功耗适合一直开着的确启发了我.所以想到拿 ...

  10. 【转】WPF - 第三方控件

    WPF - 第三方控件 目前第三方控件在网上形成巨大的共享资源,其中包括收费的也有免费的,有开源的也有不开源的,合理的使用第三方控件将使项目组的工作事半功倍.比如项目中有些复杂的业务逻辑.有些绚丽的效 ...