猿教程 Logo

LINQ方法语法

在上一节中,您已经了解了LINQ查询语法。 在这里,您将了解方法语法。

方法语法(也称为流利语法)使用Enumerable或Queryable静态类中包含的扩展方法,类似于如何调用任何类的扩展方法。

以下是一个示例LINQ方法语法查询,返回包含单词“Tutorials”的字符串集合。

相关实例:

// string collection
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C++",
    "MVC Tutorials" ,
    "Java" 
};

// LINQ Query Syntax
var result = stringList.Where(s => s.Contains("Tutorials"));

下图说明了LINQ方法语法的结构。


如上图所示,方法语法包括扩展方法和Lambda表达式。 扩展方法Where()在Enumerable类中定义。

如果你检查Where扩展方法的签名,你会发现Where方法接受一个谓词委托,如Func <Student,bool>。 这意味着您可以传递任何接受Student对象作为输入参数的委托函数,并返回一个布尔值,如下图所示。 lambda表达式作为在Where子句中传递的委托传递。 在下一节中学习lambda表达式。


以下示例显示如何使用LINQ方法语法查询IEnumerable <T>集合。

相关实例:

// Student collection
IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 13} ,
        new Student() { StudentID = 2, StudentName = "Moin",  Age = 21 } ,
        new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
        new Student() { StudentID = 4, StudentName = "Ram" , Age = 20} ,
        new Student() { StudentID = 5, StudentName = "Ron" , Age = 15 } 
    };

// LINQ Method Syntax to find out teenager students
var teenAgerStudents = studentList.Where(s => s.Age > 12 && s.Age < 20)
                                  .ToList<Student>();

相关实例:

// Student collection
Dim studentList = New List(Of Student) From {
        New Student() With {.StudentID = 1, .StudentName = "John", .Age = 13},
        New Student() With {.StudentID = 2, .StudentName = "Moin", .Age = 21},
        New Student() With {.StudentID = 3, .StudentName = "Bill", .Age = 18},
        New Student() With {.StudentID = 4, .StudentName = "Ram", .Age = 20},
        New Student() With {.StudentID = 5, .StudentName = "Ron", .Age = 15}
    }

// LINQ Method Syntax to find out teenager students
Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 And s.Age < 20)
                                                       .ToList()
要点
  1. 正如名字所暗示的,方法语法就像调用扩展方法一样。 

  2. 隐式类型变量 - var可以用于保存LINQ查询的结果。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Linq/linq-method-syntax.html