Linq to Object原理
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading; namespace ConsoleAppTest
{
class Program
{
static void Main(string[] args)
{
var list = new List<Student>()
{
new Student(){ Age=,Name="A1",Money=1.1m},
new Student(){ Age=,Name="A2",Money=1.1m},
new Student(){ Age=,Name="A3",Money=1.1m},
new Student(){ Age=,Name="A4",Money=1.1m},
new Student(){ Age=,Name="A5",Money=1.1m},
new Student(){ Age=,Name="A6",Money=1.1m},
};
list.Select(x => new { x.Age, x.Money });
var nlist = list.MyWhere(x =>
{
Thread.Sleep( * x.Age);
Console.WriteLine(x.Age);
return x.Age > ;
});
Console.WriteLine("我还没foreach");
foreach (var item in nlist)
{
Console.WriteLine($"{item.Name}:{item.Age}");
}
Console.ReadLine();
}
} public class Student
{
public int Age { get; set; }
public string Name { get; set; }
public decimal Money { get; set; }
} public static class MyLinq
{
/// <summary>
/// 1 通过委托封装 做到了代码的复用
/// 2 泛型 符合任意类型的数据筛选
/// 3 静态扩展 方便调用
/// 4 按需筛选 延迟加载 基于yield实现(语法糖,状态机)
/// </summary>
/// <typeparam name="TSource"></typeparam>
/// <param name="source"></param>
/// <param name="predicate"></param>
/// <returns></returns>
public static IEnumerable<TSource> MyWhere<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
foreach (var item in source)
{
if (predicate(item))
{
yield return item;
}
}
}
}
}

Linq to Object原理的更多相关文章
- .NET面试题系列[13] - LINQ to Object
.NET面试题系列目录 名言警句 "C# 3.0所有特性的提出都是更好地为LINQ服务的" - Learning Hard LINQ是Language Integrated Que ...
- LinQ To Object 基本用法
http://www.cnblogs.com/terryzh/archive/2012/11/10/2763538.html LinQ To Object 基本用法 inq的基本语法:var resu ...
- LINQ以及LINQ to Object 和LINQ to Entities
LINQ的全称是Language Integrated Query,中文译成“语言集成查询”,是一种查询技术. LINQ查询通过提供一种跨各种数据源和数据格式使用数据的一致模型,简化了查询过程.LIN ...
- (第一篇) 一步一步带你了解linq to Object
要想学好linq to object 我们必须要先学习lambda 表达式,学习lambda 表达式呢我们必须了解匿名函数和匿名类及扩展方法,学习匿名函数,我们必须学会委托,这是本文的宗旨.下面开始第 ...
- Atitit.linq java的原理与实现 解释器模式
Atitit.linq java的原理与实现 解释器模式 1. Linq from where 的实现1 2. Where expr 的实现1 3. Attilax的一点变化2 4. 解释器模式的 ...
- 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变
在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...
- LINQ系列:Linq to Object投影操作符
投影是指在将序列中的元素转换为一个自定义形式的操作.投影操作符Select和SelectMany用于选择出赋予了适当功能的值.SelectMany操作符可以处理多个集合. LINQ表达式语法: 1. ...
- LINQ系列:Linq to Object生成操作符
生成操作符从现有序列值中创建新的序列. 1. Empty Empty操作符返回一个指定类型的空集. 1>. 原型定义 public static IEnumerable<TResult& ...
- LINQ系列:Linq to Object转换操作符
转换是指将输入对象的类型转变为序列的动作. 1. AsEnumerable AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回. 2. Cast Cast操作符将IEn ...
随机推荐
- pwn入门题x2
pwn1 这题由于事先知道源码 从main里调用get_flag函数 然后比较magic与password变量的值,不相等跳出,相等应该就能print出flag 先用objdump看一下main和ge ...
- [Sdoi2017]新生舞会(分数规划+费用流)
题解:二分答案mid,然后将每个位置看成a-b*mid,然后由于是n个男生和n个女生匹配,每个人搭配一个cp,于是有点类似于https://www.lydsy.com/JudgeOnline/prob ...
- 支付宝aar添加与友盟冲突解决
Program type already present: com.ta.utdid2.b.a.e" 错误提示: 删掉libs中utdid的jar.
- (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal
Given an n-ary tree, return the postorder traversal of its nodes' values. For example, given a 3-ary ...
- sigaction 的使用
linux内核会发射一些信号,应用程序可以捕捉信号执行特定函数 :失败:-,设置errno act:传入参数,新的处理方式.oldact:传出参数,旧的处理方式. struct sigaction结构 ...
- 复选框checkbox——用背景图片替换样式
input { border : none; display : inline-block; width : 25px; height : 25px; -webkit-apearance : none ...
- SpringCloud笔记七:Zuul
目录 什么是Zull 为什么需要Zuul 新建Zuul项目 运行Zuul Zuul的基本配置 忽略微服务的真实名称 设置统一公共前缀 总结 什么是Zull Zuul就是一个网关,实现的功能:代理.路由 ...
- 神奇的 UNICODE 字符 : U+202E
- 如何运用jieba库分词
使用jieba库分词 一.什么是jieba库 1.jieba库概述 jieba是优秀的中文分词第三方库,中文文本需要通过分词获得单个词语. 2.jieba库的使用:(jieba库支持3种分词模式) 通 ...
- 初次接触scrapy框架
初次接触这个框架,先订个小目标,抓取QQ首页,然后存入记事本. 安装框架(http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/install.html) ...