【C#】再入門 Linq to Objects (4) 「predicate」という引数名を持つメソッドを探してみる。

  • 2013.01.29 Tuesday
  • 20:50
JUGEMテーマ:コンピュータ

 「predicate」という引数を持つメソッドを探してみました。

System.AggregateException
 Void Handle(Func<Exception, Boolean> predicate)
----------------
SingleProducerSingleConsumerQueue<>
 Boolean TryDequeueIf(Predicate<T> predicate, T& result)
----------------
System.Diagnostics.Contracts.Contract
 Boolean ForAll(IEnumerable<T> collection, Predicate<T> predicate)
 Boolean ForAll(Int32 fromInclusive, Int32 toExclusive, Predicate<Int32> predicate)
 Boolean Exists(Int32 fromInclusive, Int32 toExclusive, Predicate<Int32> predicate)
 Boolean Exists(IEnumerable<T> collection, Predicate<T> predicate)
----------------
System.Linq.Queryable
 IQueryable<TSource> Where(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 IQueryable<TSource> Where(this IQueryable<TSource> source, Expression<Func<TSource, Int32, Boolean>> predicate)
 IQueryable<TSource> TakeWhile(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 IQueryable<TSource> TakeWhile(this IQueryable<TSource> source, Expression<Func<TSource, Int32, Boolean>> predicate)
 IQueryable<TSource> SkipWhile(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 IQueryable<TSource> SkipWhile(this IQueryable<TSource> source, Expression<Func<TSource, Int32, Boolean>> predicate)
 TSource First(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 TSource FirstOrDefault(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 TSource Last(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 TSource LastOrDefault(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 TSource Single(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 TSource SingleOrDefault(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 Boolean Any(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 Boolean All(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 Int32 Count(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
 Int64 LongCount(this IQueryable<TSource> source, Expression<Func<TSource, Boolean>> predicate)
----------------
System.Linq.Enumerable
 IEnumerable<TSource> Where(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 IEnumerable<TSource> Where(this IEnumerable<TSource> source, Func<TSource, Int32, Boolean> predicate)
 IEnumerable<TSource> TakeWhile(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 IEnumerable<TSource> TakeWhile(this IEnumerable<TSource> source, Func<TSource, Int32, Boolean> predicate)
 IEnumerable<TSource> SkipWhile(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 IEnumerable<TSource> SkipWhile(this IEnumerable<TSource> source, Func<TSource, Int32, Boolean> predicate)
 TSource First(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 TSource FirstOrDefault(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 TSource Last(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 TSource LastOrDefault(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 TSource Single(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 TSource SingleOrDefault(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 Boolean Any(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 Boolean All(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 Int32 Count(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
 Int64 LongCount(this IEnumerable<TSource> source, Func<TSource, Boolean> predicate)
----------------
Iterator<>
 IEnumerable<TSource> Where(Func<TSource, Boolean> predicate)
----------------
WhereEnumerableIterator<>
 IEnumerable<TSource> Where(Func<TSource, Boolean> predicate)
----------------
WhereArrayIterator<>
 IEnumerable<TSource> Where(Func<TSource, Boolean> predicate)
----------------
WhereListIterator<>
 IEnumerable<TSource> Where(Func<TSource, Boolean> predicate)
----------------
WhereSelectEnumerableIterator<>
 IEnumerable<TResult> Where(Func<TResult, Boolean> predicate)
----------------
WhereSelectArrayIterator<>
 IEnumerable<TResult> Where(Func<TResult, Boolean> predicate)
----------------
WhereSelectListIterator<>
 IEnumerable<TResult> Where(Func<TResult, Boolean> predicate)
----------------
System.Linq.ParallelEnumerable
 ParallelQuery<TSource> Where(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 ParallelQuery<TSource> Where(this ParallelQuery<TSource> source, Func<TSource, Int32, Boolean> predicate)
 Int32 Count(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 Int64 LongCount(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 Boolean Any(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 Boolean All(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 ParallelQuery<TSource> TakeWhile(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 ParallelQuery<TSource> TakeWhile(this ParallelQuery<TSource> source, Func<TSource, Int32, Boolean> predicate)
 ParallelQuery<TSource> SkipWhile(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 ParallelQuery<TSource> SkipWhile(this ParallelQuery<TSource> source, Func<TSource, Int32, Boolean> predicate)
 TSource First(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 TSource FirstOrDefault(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 TSource Last(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 TSource LastOrDefault(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 TSource Single(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
 TSource SingleOrDefault(this ParallelQuery<TSource> source, Func<TSource, Boolean> predicate)
----------------

対象となったアセンブリは、Visual Studio 2012 .NetFramework 4.5でコンソールアプリのプロジェクトを作成したときにデフォルトで設定される参照が対象です。
ヒットしたメソッドのほとんどがフィルターの機能を実装しているメソッドだと予測されます。違う顔無性もありますが・・・。

いっぱいだー!

以下コード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Art55.PredicateDemo20130129_001
{
    class Program
    {
        static void Main(string[] args)
        {
            AppDomain
                .CurrentDomain
                .GetAssemblies()
                .SelectMany(aassebly => aassebly.GetTypes())
                .SelectMany(type => type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance))
                .Where(methodInfo => methodInfo.GetParameters().Any(pInfo => pInfo.Name == "predicate"))
                .GroupBy(methodInfo => methodInfo.ReflectedType)
                .ToList()
                .ForEach(info =>
                    {
                        Console.WriteLine(DisplayTypeUtils.ConvertToVisualType(info.Key, true));
                        info
                            .Select(DisplayTypeUtils.ConvertToVisualMethodInfo)
                            .ToList()
                            .ForEach(method => Console.WriteLine(" {0}", method));
                        Console.WriteLine("----------------");
                    });
        }
    }
    static class DisplayTypeUtils
    {
        public static string ConvertToVisualMethodInfo(MethodInfo methodInfo)
        {
            string returnTypeName = ConvertToVisualType(methodInfo.ReturnType, false);
            string methodName = methodInfo.Name;
            bool isExtension = methodInfo.IsDefined(typeof(ExtensionAttribute), true);
            var methodParameters = methodInfo
                .GetParameters()
                .Select(parameterInfo => string.Format("{0} {1}",
                                                       ConvertToVisualType(parameterInfo.ParameterType, false),
                                                       parameterInfo.Name));
            return string.Format("{0} {1}({2}{3})",
                returnTypeName,
                methodName,
                (isExtension ? "this " : string.Empty),
                string.Join(", ", methodParameters));
        }
        public static string ConvertToVisualType(Type type, bool isFullName)
        {
            return type.IsGenericType ?
                ConvertToVisualGenericTpye(type, isFullName)
                : (isFullName ? type.FullName : type.Name);
        }
        static string ConvertToVisualGenericTpye(Type type, bool isFullName)
        {
            var genericTypeArguments = type
                .GenericTypeArguments
                .Select(t => ConvertToVisualType(t, isFullName));
            return string.Format("{0}<{1}>", type.Name.Split('`')[0], string.Join(", ", genericTypeArguments));
        }
    }
}
コメント
管理者の承認待ちコメントです。
  • -
  • 2018/04/11 12:44 PM
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
2425262728  
<< February 2019 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    karuakun (01/16)
  • 【NetOffice】【Excel】死なないExcelプロセスをKillする。
    art55 (12/05)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM