public void Execute()
        {
            var persons = new Persons
            {
                new Person {
                    Id = 1, Name = "gsf_zero1"
                },
                new Person {
                    Id = 2, Name = "gsf_zero2"
                },
                new Person {
                    Id = 3, Name = "gsf_zero3"
                }
            };

            //
            // PersonExtensionが定義されているので
            // そのまま実行すると、Whereの部分にてPersonExtension.Whereが
            // 呼ばれる.
            //
            Output.WriteLine("===== 拡張メソッドを定義した状態でそのままクエリ実行 =====");
            var query = from aPerson in persons
                        where aPerson.Id == 2
                        select aPerson;

            foreach (var aPerson in query)
            {
                Output.WriteLine(aPerson);
            }

            //
            // AsEnumerableメソッドを利用して、PersonsをIEnumerable<Person>に
            // 変換すると、カスタムWhere拡張メソッドは呼ばれない。
            //
            Output.WriteLine("===== AsEnumerableメソッドを利用してから、クエリ実行 =====");
            var query2 = from aPerson in persons.AsEnumerable()
                         where aPerson.Id == 2
                         select aPerson;

            foreach (var aPerson in query2)
            {
                Output.WriteLine(aPerson);
            }
        }
Exemple #2
0
        public void Execute()
        {
            var persons = new Persons
            {
                new Person {Id = 1, Name = "gsf_zero1"},
                new Person {Id = 2, Name = "gsf_zero2"},
                new Person {Id = 3, Name = "gsf_zero3"}
            };

            //
            // PersonExtensionが定義されているので
            // そのまま実行すると、Whereの部分にてPersonExtension.Whereが
            // 呼ばれる.
            //
            Output.WriteLine("===== 拡張メソッドを定義した状態でそのままクエリ実行 =====");
            var query = from aPerson in persons
                        where aPerson.Id == 2
                        select aPerson;

            foreach (var aPerson in query)
            {
                Output.WriteLine(aPerson);
            }

            //
            // AsEnumerableメソッドを利用して、PersonsをIEnumerable<Person>に
            // 変換すると、カスタムWhere拡張メソッドは呼ばれない。
            //
            Output.WriteLine("===== AsEnumerableメソッドを利用してから、クエリ実行 =====");
            var query2 = from aPerson in persons.AsEnumerable()
                         where aPerson.Id == 2
                         select aPerson;

            foreach (var aPerson in query2)
            {
                Output.WriteLine(aPerson);
            }
        }