文档章节

Linq快速入门——扩展方法

 木宛城主
发布于 2015/03/02 19:43
字数 316
阅读 9
收藏 0

Linq为我们提供了许多扩展方法,方便我们对数据源进行操作(Where,Select...)。即使你不了解算法,也能使用Linq当回牛人。扩展方法本质并不是什么高深的技术,说白了就是一个Static静态方法。

声明扩展方法步骤:

  • 创建一个名为MyHelper的类,约定了此类中的方法均是扩展方法。注意这个类必须是静态类(Static)
  • 扩展方法必须是Static静态方法
  • 第一个参数为待扩展的类型,前面标注this
  • 如果MyHelper在一个类库中,记得对其添加引用using相关名称空间

A simple example

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

namespace Linq
{
    public static  class 扩展方法Helper
    {
        public static string ToMyUpper(this string helper)
        {
            return "\""+helper.ToUpper() + "\"";
        }

        public static string Quoted(this string helper,string a,string b)
        {
            return a + helper + b;
        }
        public static bool IsNumber(this string helper)
        {
            int i;
            return int.TryParse(helper,out i);
        }
        public static string ToChineses(this bool helper)
        {
            return  helper ? "" : "";
        }
        public static int CreateMan(this Person helper)
        {
            Person one = new Person { Age=18,Name="Eyes"};
            return one.Age;
        }
    }
    public class Person
    {
        public int Age { get; set; }
        public string Name { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Linq
{
    class Program
    { 
        static void Main(string[] args)
        {

            Person p = new Person();
            Console.WriteLine(p.Name.IsNumber().ToChineses());
            Console.ReadKey();
        }
    }
}

总结

系列完善中,请持续关注...

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 222
码字总数 199010
作品 0
黄浦
私信 提问
LINQ简记(2):重要概念

为了能让初学者更快速地掌握,在系列文章中,我尽可能地避开理论讲解,一则对于入门者来说,过多的理论叙述反而会降低大家学习编程的兴趣,二则,官方文档的资料很详细,我说了也是废话。因此...

junwong
2012/04/18
58
0
Web开发系列 - JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子...

长征2号
2017/01/05
0
0
编写高质量代码改善C#程序的157个建议[IEnumerable和IQueryable、LINQ避免迭代、LINQ替代迭代]

前言 本文已更新至http://www.cnblogs.com/aehyok/p/3624579.html 。本文主要学习记录以下内容:   建议29、区别LINQ查询中的IEnumerable和IQueryable   建议30、使用LINQ取代集合中的比...

aehyok
2014/05/09
0
0
编写高质量代码改善C#程序的157个建议[匿名类型、Lambda、延迟求值和主动求值]

前言   从.NET3.0开始,C#开始一直支持一个新特性:匿名类型。匿名类型由var、赋值运算符和一个非空初始值(或以new开头的初始化项)组成。匿名类型有如下基本特性: 1、既支持简单类型也支...

aehyok
2014/05/07
0
0
编写高质量代码改善C#程序的157个建议——导航开篇

前言   由于最近工作重心的转移,原来和几个同事一起开发的项目也已经上线了,而新项目就是在现有的项目基础上进行优化延伸扩展。打个比方,现在已经上线的项目行政案件的Web管理网站(代码...

aehyok
2014/03/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB

MongoDB介绍 官网www.mongodb.com, 当前最新版3.4 C++编写,基于分布式的,属于NoSQL的一种 在NoSQL中是最像关系型数据库的 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组...

chencheng-linux
29分钟前
1
0
Qt那些事0.0.10

release和debug在性能上差距很多,困扰我三周的问题很可能是因为这个。

Ev4n
43分钟前
4
0
flume1.8taildirSource

flume使用(一):入门demo flume使用(二):采集远程日志数据到MySql数据库 flume使用(三):实时log4j日志通过flume输出到MySql数据库 flume使用(四):taildirSource多文件监控实时采集...

hblt-j
44分钟前
1
0
redis--windows客户端引起的项目问题

一、redis安装 redis客户端下载地址:https://github.com/MSOpenTech/redis/releases。(redis一开始只支持Linux系统,后来有团队搞出了windows版,不过版本时间偏旧,也无所谓了,可以正常使...

随风飞临蛮荒境123
今天
1
0
19《Java核心技术》之什么情况下Java程序会产生死锁?如何定位、修复?

一、提出问题 今天,我们会讨论一些日常开发中类似线程死锁等问题的排查经验,并选择一两修复过或者诊断过的核心类库死锁问题作为例子,希望不仅能在面试时,包括在日常工作中也能对你有所帮...

飞鱼说编程
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部