本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Enumerable.AsEnumerable<TSource> 方法 (IEnumerable<TSource>)

 

返回输入类型化为 IEnumerable<T>

命名空间:   System.Linq
程序集:  System.Core(位于 System.Core.dll)

public static IEnumerable<TSource> AsEnumerable<TSource>(
	this IEnumerable<TSource> source
)

参数

source
Type: System.Collections.Generic.IEnumerable<TSource>

序列以键入 IEnumerable<T>

返回值

Type: System.Collections.Generic.IEnumerable<TSource>

在输入的序列类型化为 IEnumerable<T>

类型参数

TSource

中的元素的类型 source

AsEnumerable<TSource>(IEnumerable<TSource>) 方法不起作用而不更改编译时类型的 source 实现的类型从 IEnumerable<T>IEnumerable<T> 本身。

AsEnumerable<TSource>(IEnumerable<TSource>) 可用于查询实现当序列实现之间进行选择 IEnumerable<T> 但也有一组不同的可用公共查询方法。 例如,给定泛型类 Table 实现 IEnumerable<T> 和具有它自己的方法,如 Where, ,Select, ,和 SelectMany, ,调用 Where 像调用公共 Where 方法 Table 一个 Table 表示数据库表的类型可能具有 Where方法,它将谓词表达式目录树作为参数并将该树到 SQL 转换为远程执行。 如果远程执行不需要时,例如谓词时,将调用本地方法,因为 AsEnumerable<TSource> 方法可用来隐藏自定义方法,并改为提供的标准查询运算符。

下面的代码示例演示如何使用 AsEnumerable<TSource>(IEnumerable<TSource>) 若要隐藏了某个类型的自定义 Where 方法时所需标准查询运算符的实现。

// Custom class.
class Clump<T> : List<T>
{
    // Custom implementation of Where().
    public IEnumerable<T> Where(Func<T, bool> predicate)
    {
        Console.WriteLine("In Clump's implementation of Where().");
        return Enumerable.Where(this, predicate);
    }
}

static void AsEnumerableEx1()
{
    // Create a new Clump<T> object.
    Clump<string> fruitClump =
        new Clump<string> { "apple", "passionfruit", "banana", 
            "mango", "orange", "blueberry", "grape", "strawberry" };

    // First call to Where():
    // Call Clump's Where() method with a predicate.
    IEnumerable<string> query1 =
        fruitClump.Where(fruit => fruit.Contains("o"));

    Console.WriteLine("query1 has been created.\n");

    // Second call to Where():
    // First call AsEnumerable() to hide Clump's Where() method and thereby
    // force System.Linq.Enumerable's Where() method to be called.
    IEnumerable<string> query2 =
        fruitClump.AsEnumerable().Where(fruit => fruit.Contains("o"));

    // Display the output.
    Console.WriteLine("query2 has been created.");
}

// This code produces the following output:
//
// In Clump's implementation of Where().
// query1 has been created.
//
// query2 has been created.

通用 Windows 平台
自 8 起可用
.NET Framework
自 3.5 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: