在查询中使用 Lambda 表达式
2015-02-25 11:29
471 查看
如何:在查询中使用 Lambda 表达式(C# 编程指南) |
您不会在查询语法中直接用到 Lambda 表达式,但会在方法调用中用到这些表达式,并且查询表达式可以包含方法调用。事实上,某些查询操作只能用方法语法表示。有关查询语法和方法语法之间的区别的更多信息,请参见查询语法与方法语法 (LINQ)。
![](http://shouce.jb51.net/net/icons/collapse_all.gif)
示例
下面的示例演示如何通过使用 Enumerable.Where 标准查询运算符在基于方法的查询中使用 Lambda 表达式。请注意,此示例中的 Where 方法具有一个委托类型为 Func(TResult)的输入参数,并且委托采用整数作为输入并返回布尔值。可以将Lambda 表达式转换为该委托。假若这是使用 Queryable.Where 方法的 LINQ to SQL 查询,则参数类型将为Expression<Func<int,bool>>,但 Lambda 表达式看起来将完全相同。有关表达式类型的更多信息,请参见 System.Linq.Expressions.Expression。
C# | ![]() 复制代码 |
---|---|
class SimpleLambda { static void Main() { // Data source. int[] scores = { 90, 71, 82, 93, 75, 82 }; // The call to Count forces iteration of the source int highScoreCount = scores.Where(n => n > 80).Count(); Console.WriteLine("{0} scores are greater than 80", highScoreCount); // Outputs: 4 scores are greater than 80 } } |
查询首先按 GradeLevel 枚举中定义的方式,依据学生的成绩等级对学生进行分组。然后,对于每个组,查询将添加每名学生的总分。这需要两个 Sum 运算。内部的 Sum 计算每名学生的总分,外部的 Sum 保留该组中所有学生的运行合并总计。
C# | ![]() 复制代码 |
---|---|
private static void TotalsByGradeLevel() { // This query retrieves the total scores for First Year students, Second Years, and so on. // The outer Sum method uses a lambda in order to specify which numbers to add together. var categories = from student in students group student by student.Year into studentGroup select new { GradeLevel = studentGroup.Key, TotalScore = studentGroup.Sum(s => s.ExamScores.Sum()) }; // Execute the query. foreach (var cat in categories) { Console.WriteLine("Key = {0} Sum = {1}", cat.GradeLevel, cat.TotalScore); } } /* Outputs: Key = SecondYear Sum = 1014 Key = ThirdYear Sum = 964 Key = FirstYear Sum = 1058 Key = FourthYear Sum = 974 */ |
相关文章推荐
- Lambda表达式--使用方法语法的复杂查询: join (在单个 LINQ to Entities 查询中的两个结构上不兼容的初始化过程中出现类型)
- 学习笔记之在查询中使用 Lambda 表达式(C# 编程指南)
- C# Error CS1628: 不能在匿名方法、lambda 表达式或查询表达式中使用 ref 或 out 参数
- 深入理解 c# 第一章 使用LINQ 查询表达式
- mysql中使用正则表达式查询
- 一个使用TBB Lambda 表达式实现并行执行的例子
- 建议37:使用Lambda表达式代替方法和匿名方法
- linq 扩展,在查询中使用字符串表达式对结果进行排序
- 【C++】C++11新特性 之 lambda表达式的使用
- Java8 lambda表达式使用总结
- 黄聪:4.Ling初体验 匿名类型在查询表达式中的使用
- vector 使用 c++11 Lambda 表达式 排序
- lambda表达式的使用详解
- C# lambda表达式参数的正确使用姿势
- SQL数据库查询使用正则表达式查询中文
- Java 8 之 lambda 表达式简单使用入门实例代码
- Visual studio 替换使用正则表达式 查询http
- 在Android上使用Lambda表达式 - retrolambda插件
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式
- 匿名方法(暨 lambda 表达式)使用指南