导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Enumerable.Single<TSource> 方法 (IEnumerable<TSource>, Func<TSource, Boolean>)

2013/12/13

返回序列中满足指定条件的唯一元素;如果有多个这样的元素存在,则会引发异常。

Namespace:  System.Linq
程序集:  System.Core(位于 System.Core.dll 中)

public static TSource Single<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, bool> predicate
)

类型参数

TSource

source 中的元素的类型。

参数

source
类型: System.Collections.Generic.IEnumerable<TSource>
一个 IEnumerable<T>,用于从中返回单个元素。
predicate
类型: System.Func<TSource, Boolean>
用于测试元素是否满足条件的函数。

返回值

类型: TSource
输入序列中满足条件的单个元素。

用法说明

在 Visual Basic 和 C# 中,您可以对类型为 IEnumerable<TSource> 的任何对象调用此方法作为实例方法。使用实例方法语法来调用此方法时,忽略第一个参数。

异常条件
ArgumentNullException

sourcepredicatenull

InvalidOperationException

没有元素满足 predicate 中的条件。

- 或 -

多个元素满足 predicate 中的条件。

- 或 -

源序列为空。

如果输入序列中不包含任何匹配元素,则 Single<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) 方法将引发异常。 要在无法找到匹配元素时改为返回 null,则使用 SingleOrDefault

下面的代码示例演示如何使用 Single<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) 选择数组中满足条件的唯一元素。


      string[] fruits = { "apple", "banana", "mango", 
                               "orange", "passionfruit", "grape" };

      string fruit1 = fruits.Single(fruit => fruit.Length > 10);

      outputBlock.Text += fruit1 + "\n";

      /*
       This code produces the following output:

       passionfruit
      */



下面的代码示例演示序列不是恰好包含一个满足条件的元素时 Single<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) 将引发异常。


      string fruit2 = null;

      try
      {
         fruit2 = fruits.Single(fruit => fruit.Length > 15);
      }
      catch (System.InvalidOperationException)
      {
         outputBlock.Text += @"The collection does not contain exactly 
                             one element whose length is greater than 15." + "\n";
      }

      outputBlock.Text += fruit2 + "\n";

      // This code produces the following output:
      //
      // The collection does not contain exactly  
      // one element whose length is greater than 15.



Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2015 Microsoft