Queryable.OfType<TResult>(IQueryable) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した型に基づいて、IQueryable の要素をフィルター処理します。
public:
generic <typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TResult> ^ OfType(System::Linq::IQueryable ^ source);
public static System.Linq.IQueryable<TResult> OfType<TResult>(this System.Linq.IQueryable source);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TResult> OfType<TResult>(this System.Linq.IQueryable source);
static member OfType : System.Linq.IQueryable -> System.Linq.IQueryable<'Result>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member OfType : System.Linq.IQueryable -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function OfType(Of TResult) (source As IQueryable) As IQueryable(Of TResult)
型パラメーター
- TResult
シーケンスの要素をフィルター処理する型。
パラメーター
- source
- IQueryable
フィルター処理する要素を持つ IQueryable 。
戻り値
型がTResultsourceの要素を含むコレクション。
- 属性
例外
source は nullです。
例
次のコード例では、OfTypeを使用して、MemberInfo型の要素の一覧からPropertyInfo型ではない要素を除外する方法を示します。
// Create a list of MemberInfo objects.
List<System.Reflection.MemberInfo> members = typeof(String).GetMembers().ToList();
// Return only those items that can be cast to type PropertyInfo.
IQueryable<System.Reflection.PropertyInfo> propertiesOnly =
members.AsQueryable().OfType<System.Reflection.PropertyInfo>();
Console.WriteLine("Members of type 'PropertyInfo' are:");
foreach (System.Reflection.PropertyInfo pi in propertiesOnly)
Console.WriteLine(pi.Name);
/*
This code produces the following output:
Members of type 'PropertyInfo' are:
Chars
Length
*/
' Create a list of MemberInfo objects.
Dim members As List(Of System.Reflection.MemberInfo) = GetType(String).GetMembers().ToList()
' Return only those items that can be cast to type PropertyInfo.
Dim propertiesOnly As IQueryable(Of System.Reflection.PropertyInfo) = _
members.AsQueryable().OfType(Of System.Reflection.PropertyInfo)()
Dim output As New System.Text.StringBuilder
output.AppendLine("Members of type 'PropertyInfo' are:")
For Each pi As System.Reflection.PropertyInfo In propertiesOnly
output.AppendLine(pi.Name)
Next
' Display the output.
MsgBox(output.ToString())
' This code produces the following output:
' Members of type 'PropertyInfo' are:
' Chars
' Length
注釈
OfType メソッドは、構築されたジェネリック メソッドとしての呼び出しOfType自体を表すMethodCallExpressionを生成します。 次に、source パラメーターのProvider プロパティで表されるIQueryProviderのCreateQuery(Expression) メソッドにMethodCallExpressionを渡します。
呼び出し OfType を表す式ツリーを実行した結果として発生するクエリ動作は、 source パラメーターの型の実装によって異なります。 予期される動作は、TResult型ではないsource内のすべての要素を除外することです。