zoukankan      html  css  js  c++  java
  • Linq lamda表达式Single和First方法

     

    让我们来看看如何对一个整数数组使用 Single 操作符。这个整数数组的每个元素代表 2 的 1 到 10 次方。先创建此数组,然后使用 Single 操作符来检索满足 Linq Lambda表达式中指定条件的单个整数元素:

    1. int[] nums = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 }; 
    2. int singleNum =nums.Single(x => x > 16 && x<64); 
    3. Console.WriteLine(singleNum.ToString());

    Linq Lambda表达式包含多个关键部分。Linq Lambda表达式首先定义传入委托的变量。在以上代码示例中,x(在 => 操作符左侧声明)是参数,代表传递给它的 nums 数组中的每个元素。Linq Lambda表达式的剩余部分代表数组中每个元素的评估逻辑。可使用匿名委托轻松地重新编写以上表达式,如下所示:

    1. int singleNum =nums.Single<int>
    2. delegate(int x) {return (x > 16 && x<64); } 
    3. ) ;

    但是,此代码的可读性不及 Linq Lambda表达式。C# 2.0 引入了可使委托的传递稍微轻松些的匿名委托;但是,Linq Lambda表达式的简洁语法可使其更加简单。

    First和Single

    如 果必须从序列中提取一个值,First、FirstOrDefault、Single 和 SingleOrDefault 操作符都非常有用。First 方法返回序列中的第一个元素。First 有一个重载方法,可使用它来传入 Linq Lambda表达式来代表一个条件。例如,如果要返回整数序列中整数元素大于 50 的第一个元素,可使用以下代码示例:

    1. int[] nums = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 }; 
    2. int num1 =nums.First<int>(); 
    3. int num2 =nums.First<int>(x => x> 50); 
    4. int num3 =nums.FirstOrDefault<int>(x => x> 5000); 
    5. Console.WriteLine( 
    6. num1.ToString() + "-" +  
    7. num2.ToString() + "-" +  
    8. num3.ToString());

    此 代码会查找第一个元素 (1)、大于 50 的第一个元素 (64) 以及大于 5,000 的第一个元素。由于数组中没有元素满足第三个 Linq Lambda表达式(数组中无整数大于 5,000),则如果代码使用的是 First 操作符而非 FirstOrDefault,则会引发异常。在使用 FirstOrDefault 操作符时,如果没有元素满足 Linq Lambda表达式,则会返回 0。First 操作符也可用于 LINQ to Entities 查询,如下所示:

    1. using (Entities entities =new Entities()) 
    2. var query = (from c in entities.Customers 
    3. select c).First(c => c.City.Equals("London")); 
    4. Console.WriteLine(query.CompanyName); 
    5. }

    在此示例中,将返回 London 城中的第一个客户。正如您所看到的,当 First 方法用于各种 LINQ 提供程序(在本例中为 LINQ to Objects 和 LINQ to Entities)时,所用的语法并不会更改。

     
     
  • 相关阅读:
    【VS开发】CTimeSpan类
    【VS开发】CTimeSpan类
    【VS开发】【电子电路技术】PCI与PCIE主板插卡与插槽识别
    【VS开发】【电子电路技术】PCI与PCIE主板插卡与插槽识别
    【VS开发】PCIe体系结构的组成部件
    【VS开发】PCIe体系结构的组成部件
    【VS开发】【DSP开发】WinDriver简介(或介绍)
    转载 ------ 三次指数平滑法
    转载:二次指数平滑法求预测值的Java代码
    转载: 通过反射操作类的私有属性
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/5416667.html
Copyright © 2011-2022 走看看