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 ...
随机推荐
- HNOI2018寻宝游戏
https://www.luogu.org/problemnew/show/P4424 题解 我们首先按位考虑. 如果有一位最终的结果为1,那么我们可以把树的序列看成一个二进制数,先出现的在底位,后出 ...
- ajax参数传递与后台接收
目录 ajax参数传递与后台接收 Servlet中读取http参数的方法 使用默认contentType,参数追加到url后传递 使用默认contentType,参数放到data中传递 使用默认con ...
- python第九天
复习内容: 文件处理 1. 操作文件的三步骤: ---打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持有 ---操作文件:读写操作 ---释放文件:释放操作系统对硬盘空间的持有 2. ...
- Apache Hadoop 2.9.2 的集群管理之服役和退役
Apache Hadoop 2.9.2 的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 随着公司业务的发展,客户量越来越多,产生的日志自然也就越来越大来,可能 ...
- 高可用-mysql安装,双主模式+keepalived
mysql安装 1.添加用户 groupadd mysql useradd -r -g mysql mysql
- ES6.3.2 副本失败处理
ES6.3.2 副本失败处理 副本的失败处理对理解ES的数据副本模型很有帮助.在ES6.3.2 index操作源码流程的总结中提到:ES的写操作会先写主分片,然后主分片再将操作同步到副本分片.本文给出 ...
- C# bool.tryparse
才工作时候是做C++的,受这个影响一直以为C# 转换 “0” 和 "false"会转换为 false,“1”和"true"转换为true,原来只有“true”才 ...
- [C++]类成员返回语句 return *this 的理解
经常会在类似 copy-assignment 的成员函数看到返回语句 return *this ,这类函数通常返回类型是所属类的引用. 类成员函数的隐式指针 class *this const 经过 ...
- python ftp批量上传文件下载文件
# encoding:utf-8 from ftplib import FTPimport osimport sys _XFER_FILE = 'FILE'_XFER_DIR = 'DIR' clas ...
- 使用Lottie将AE项目转换为 Web 原生动画
使用Lottie转换AE项目为 Web 原生动画 首先打开链接https://github.com/airbnb/lottie-web/blob/master/build/extension/body ...