Queryable.Cast<TResult>(IQueryable) 方法

定义

IQueryable 的元素转换为指定的类型。Converts the elements of an IQueryable to the specified type.

public:
generic <typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ Cast(System::Linq::IQueryable ^ source);
public static System.Linq.IQueryable<TResult> Cast<TResult> (this System.Linq.IQueryable source);
static member Cast : System.Linq.IQueryable -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function Cast(Of TResult) (source As IQueryable) As IQueryable(Of TResult)

类型参数

TResult

source 中的元素要转换成的类型。The type to convert the elements of source to.

参数

source
IQueryable

包含要转换的元素的 IQueryableThe IQueryable that contains the elements to be converted.

返回

IQueryable<TResult>

一个 IQueryable<T>,其中包含已转换为指定类型的源序列的每个元素。An IQueryable<T> that contains each element of the source sequence converted to the specified type.

异常

sourcenullsource is null.

序列中的元素不能强制转换为 TResult 类型。An element in the sequence cannot be cast to type TResult.

示例

下面的代码示例演示如何使用Cast<TResult>(IQueryable)将序列中的对象转换为类型。 StringThe following code example demonstrates how to use Cast<TResult>(IQueryable) to convert objects in a sequence to type String.


// Create a list of objects.
List<object> words =
    new List<object> { "green", "blue", "violet" };

// Cast the objects in the list to type 'string'
// and project the first letter of each string.
IEnumerable<string> query =
    words.AsQueryable()
    .Cast<string>()
    .Select(str => str.Substring(0, 1));

foreach (string s in query)
    Console.WriteLine(s);

/*  This code produces the following output:

    g
    b
    v
*/


' Create a list of objects.
Dim words As New List(Of Object)(New Object() {"green", "blue", "violet"})

' Cast the objects in the list to type 'string'
' and project the first letter of each string.
Dim query As IEnumerable(Of String) = _
    words.AsQueryable() _
            .Cast(Of String)() _
            .Select(Function(str) str.Substring(0, 1))

For Each s As String In query
    MsgBox(s)
Next

' This code produces the following output:
'
' g
' b
' v

注解

方法生成一个MethodCallExpression , 它表示调用Cast<TResult>(IQueryable)自身作为构造的泛型方法。 Cast<TResult>(IQueryable)The Cast<TResult>(IQueryable) method generates a MethodCallExpression that represents calling Cast<TResult>(IQueryable) itself as a constructed generic method. 然后, 它将MethodCallExpression传递CreateQuery(Expression)给由Provider source参数的IQueryProvider属性表示的的方法。It then passes the MethodCallExpression to the CreateQuery(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

由于执行表示调用Cast<TResult>(IQueryable)的表达式树而发生的查询行为取决于source参数类型的实现。The query behavior that occurs as a result of executing an expression tree that represents calling Cast<TResult>(IQueryable) depends on the implementation of the type of the source parameter. 预期的行为是将中source的值转换为类型。 TResultThe expected behavior is that it converts the values in source to type TResult.

适用于