LINQ中的扩展方法

Posted SpeedHorse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINQ中的扩展方法相关的知识,希望对你有一定的参考价值。

LINQ中的where(),OderByDescending().Select()并不是IEnumerable<T>的方法,却能使用这些方法,查阅了资料发现是用到了C#的扩展方法。

举个小例子:

定义一个静态类StringExtension和静态方法Foo,关键字this.

 public static class StringExtension
    {
        public static void Foo(this string s)
        {
            Console.WriteLine("Foo invoked fro {0}", s);
        }
    }

这样引用该类的命名空间之后,就可以调用Foo方法

string s = "hello";
s.Foo();

等同于

string s = "hello";
StringExtension.Foo(s); //s.Foo();

LINQ的扩展方法的类是System.Linq命名空间下的Enumerable。

调用Where方法时,第一个参数是包含了this的IEnumerable<T>,第二个参数是一个Func<T,bool>委托,它引用一个返回Bool、参数为T的方法。

以上是关于LINQ中的扩展方法的主要内容,如果未能解决你的问题,请参考以下文章

LINQ中的扩展方法

ABP框架源码中的Linq扩展方法

LINQ to XML - 从文件加载 XML 片段

用于LINQ的SQL等效扩展方法并不明显

扩展方法使 LINQ 中断

错误 3002:映射片段中的问题 | c# linq 到实体