投稿数 - 437, コメント - 52722, トラックバック - 156

匿名メソッドとラムダ、そして LINQ の違い - vol 1

.NET Framework 3.5、C#3.0

 

匿名メソッドとラムダを「ただシンタックスが違うだけ」と考えているとエライ目にあう。

SQL Server 2005 のサンプルデータベース「AdventureWorks」を使って、匿名メソッドとラムダ、ついでに LINQ による LINQ to SQL で検証する(匿名メソッドとラムダを使った場合に LINQ to SQL と表現するのは微妙だけど)。

匿名メソッド
AdventureWorksDataContext adventureWorks = new AdventureWorksDataContext(); var query = adventureWorks.Address. Where(delegate(Address address) { return address.City == "Bothell"; }). Select(delegate(Address address) { return address.AddressID; });
ラムダ
AdventureWorksDataContext adventureWorks = new AdventureWorksDataContext(); var query = adventureWorks.Address. Where(address => address.City == "Bothell"). Select(addres => addres.AddressID);
LINQ
AdventureWorksDataContext adventureWorks = new AdventureWorksDataContext(); var query = from address in adventureWorks.Address where address.City == "Bothell" select address.AddressID;

上記 3 つは書き方が違うだけで、処理は同じ事をしている。簡単な例なので説明は不要だろう。

結果は全く同じになるが、大きな違いが一つある。匿名メソッドの例は非常にパフォーマンスが悪いのだ。実際に発行される SQL を見てみよう。

匿名メソッド

SELECT [t0].[AddressID], [t0].[AddressLine1], [t0].[AddressLine2], [t0].[City], [t0].[StateProvinceID], [t0].[PostalCode], [t0].[rowguid], [t0].[ModifiedDate] FROM [Person].[Address] AS [t0]
ラムダ、LINQ
exec sp_executesql N' SELECT [t0].[AddressID] FROM [Person].[Address] AS [t0] WHERE [t0].[City] = @p0',N'@p0 nvarchar(7)',@p0=N'Bothell'

違いは一目瞭然。 匿名メソッドはアホ過ぎるクエリを発行している。何故だろうか。

つづく。

投稿日時 : 2007年9月15日 10:46

フィードバック

# re: 匿名メソッドとラムダ、そして LINQ の違い - vol 1

匿名メソッドだと、指定していない項目もSELECTしちゃうんですね。
(そのままベタで、SQL生成しているだけって感じでしょうか。)

理由が知りたいところですw
2007/09/15 17:01 | けろ

# re: 匿名メソッドとラムダ、そして LINQ の違い - vol 1

匿名メソッドは素直なつくり、クエリ式はエロティックなつくりだから
2007/09/15 19:22 | 中博俊

# re: 匿名メソッドとラムダ、そして LINQ の違い - vol 1

>匿名メソッドは素直なつくり

漏れのある抽象化の法則,本日おすすめの商品はこちら!
http://blogs.msdn.com/ericlippert/archive/2007/06/06/fyi-c-and-vb-closures-are-per-scope.aspx
http://d.hatena.ne.jp/siokoshou/20070716#p1
2007/09/15 20:23 | NyaRuRu

# re: 匿名メソッドとラムダ、そして LINQ の違い - vol 1

ってまあラムダ式のノーテーションでも解放遅延の問題は起きるので,コレに関しては匿名関数一般の問題でしょうけど.
匿名関数の定義はこちら.
http://d.hatena.ne.jp/siokoshou/20070821#p1

ラムダ式でもExpression Treeにquoteできない表現は可能なので,そこが誤解されなければOKかと思います.
まずいのは,「ラムダ式で書けば必ずExpression Treeでキャプチャできる」と思われることですかね.

試してないですが,下の式コンパイルできたりしませんか?

var query = adventureWorks.Address.
Where(address => {switch(address.City){case "Bothell" return true; default return false;}}).
Select(addres => addres.AddressID);
2007/09/15 20:53 | NyaRuRu

# re: 匿名メソッドとラムダ、そして LINQ の違い - vol 1

>理由が知りたいところですw

続きは Web で。


>クエリ式はエロティックなつくりだから

それだ!


>ラムダ式でもExpression Treeにquoteできない表現は可能なので,そこが誤解されなければOKかと思います.
>まずいのは,「ラムダ式で書けば必ずExpression Treeでキャプチャできる」と思われることですかね.

ですね。単に式だったら何でも Expression Tree になるってわけでもないのかな。ルールがよく分からんです。


>試してないですが,下の式コンパイルできたりしませんか?

できました。勿論、結果は NyaRuRu さんの期待通りかと。
2007/09/18 9:16 | 囚人

# 匿名メソッドとラムダ、そして LINQ の違い - vol 2

匿名メソッドとラムダ、そして LINQ の違い - vol 2
2007/09/25 13:01 | 囚人のジレンマな日々

# http://lvbeltcheap.sinaapp.com/

今日は よろしくお願いしますね^^すごいですね^^

# Nike Mens Air Jordan 3

http://www.embchamber.org/D5dTbCJdTT4Air Jordan 5 Olive Orange Catering
Nike Mens Air Jordan 3 http://www.embchamber.org/D3bCOaLUKd1
2015/10/26 9:41 | kngror@aol.com

# コーチ 財布 迷彩

http://www.hukum123.com/1fRQZSVYXG6mcm 二つ折り財布 メンズ
コーチ 財布 迷彩 http://www.starquine.com/1uEYMGJaMC7
2015/11/02 17:46 | ikxkhk@aol.com

# ケイトスペード ニューバランス

http://aboutchicagolimo.com/2vQQUBWbcb1ラコステ ゲーム
ケイトスペード ニューバランス http://autorepairinorange.com/qsONCVXaLZ8
2015/11/02 17:58 | vlbejjsszvy@aol.com

# ナイキ ソフトボール シューズ

http://www.southernfulfillment.com/1ePQMDcUKR2ブルガリ 評価
ナイキ ソフトボール シューズ http://glanztantrareiki.es/2caQKCLDCE5
2015/11/04 17:13 | tkdkuri@aol.com

# nike ショップ 原宿

http://www.hukum123.com/2qMKaRWZRL3アディダス レディース サンバイザー
nike ショップ 原宿 http://greenageproducts.com/2cYORVQKRb8
2015/11/04 17:14 | tkdkuri@aol.com

# コーチ 長財布 ブラウン

http://www.leedor.com/1aJKWJYFVS3ケイトスペード iphone6 ケース 発売
コーチ 長財布 ブラウン http://joyannettdesigns.com/quWSUCHKOR6
2015/11/04 17:15 | tkdkuri@aol.com

# ジバンシー ハンカチ

http://joyannettdesigns.com/quMCAKNcNK3コーチ シグネチャー 中古
ジバンシー ハンカチ http://aboutchicagolimo.com/qoWRQHJOID3
2015/11/04 17:15 | tkdkuri@aol.com

# シャネル バッグ 格安

http://www.starquine.com/2qcRbKDPHQ0アディダス ロゴマーク
シャネル バッグ 格安 http://www.togethersimple.com/1tRLdVQRLd3
2015/11/04 17:16 | tkdkuri@aol.com

# エムシーエム 長財布 楽天

http://justwilliet.com/qpBHRACAKH3gucci ショルダーバック
エムシーエム 長財布 楽天 http://2mgn.com/qhVBMcFMQX9
2015/11/04 17:17 | tkdkuri@aol.com

# nike タンクトップ レディース

http://everythingbuds.com/2cGaUYJdcX8nike ポイントスパイク
nike タンクトップ レディース http://everythingbuds.com/2cJRHGbaIS2
2015/11/04 17:35 | sflrwrewgsh@aol.com

# ニューバランス made in usa 違い

http://justwilliet.com/qaLWGNLKbL6エルメス エールライン コピー
ニューバランス made in usa 違い http://joyannettdesigns.com/3qOJMIccJF3
2015/11/04 17:38 | sflrwrewgsh@aol.com

# ジバンシー バンビ 財布

http://justwilliet.com/2xZaWQELFS5アディダス ランニングシューズ 比較
ジバンシー バンビ 財布 http://www.pgprofessionalgolf.com/1iXBcAJJVY6
2015/11/04 17:39 | sflrwrewgsh@aol.com

# lacoste 会社

http://glanztantrareiki.es/3qOQSbAEWW9ニューバランス メンズ 人気 996
lacoste 会社 http://www.taln2013.org/2wPCONOJMU6
2015/11/04 17:39 | sflrwrewgsh@aol.com

# セリーヌ トリオ ブラック

http://apartysolution.com/4rMBSWZFFN3クロムハーツ通販本物
セリーヌ トリオ ブラック http://www.kongcreate.com/1rOFWTORHC0
2015/11/04 17:53 | ofmmyolzkhu@aol.com

# ハワイ シャネル 安い コスメ

http://greenageproducts.com/swCQaEKcbU3シャネル ノベルティ 小物
ハワイ シャネル 安い コスメ http://perspectiveswe.com/awdTVddOWJ3
2015/11/06 21:12 | yrykxp@aol.com

# タグホイヤー ジャパン

http://autorepairinorange.com/2nSQGPRSRH9vans ムートン abcマート
タグホイヤー ジャパン http://miranmasala.com/spBDSGIdUN3
2015/11/06 22:22 | aryzmtljhxo@aol.com

# シャネル カフェ

http://everythingbuds.com/swBALZEKKD5シャネル ネイル シール
シャネル カフェ http://othellowa.gov/swbDJHFVbE8
2015/11/06 22:24 | aryzmtljhxo@aol.com

# gg ブランド

http://glanztantrareiki.es/2nAdIMMLFM8vans ブーツスニーカー
gg ブランド http://justwilliet.com/qpPdSPDdMa4
2015/11/06 22:25 | aryzmtljhxo@aol.com

# チュードル ラグ幅

http://autorepairinorange.com/3qbQDaTaFT7ニューバランス 千葉
チュードル ラグ幅 http://afrodad.org/saPdbZCDdd9
2015/11/06 22:51 | vsnjiedsg@aol.com

# クロムハーツ buyma

http://autorepairinorange.com/awQQaBaVYA2シャネル チーク いくら
クロムハーツ buyma http://www.njlegdistrict3.com/4qRHVdOESL8
2015/11/08 20:34 | gffktac@aol.com

# シャネル チャンス オー タンドゥル ヘアミスト

http://www.southernfulfillment.com/1dJGQVcTTT6ヴィトン コスメ ポーチ
シャネル チャンス オー タンドゥル ヘアミスト http://mehralborz.ac.ir/dwKWbDMGJI1
2015/11/08 20:35 | gffktac@aol.com

# エルメス ルビー

http://everythingbuds.com/sobRPZcNcZ8チュードル ロレックス リューズ
エルメス ルビー http://www.pgprofessionalgolf.com/1pESAEEBAQ1
2015/11/08 20:35 | gffktac@aol.com

# サーモンピンク リップ シャネル

http://alc.md/stbXNBDaKT6ウブロ エアロ
サーモンピンク リップ シャネル http://sumatranorangutan.org/swBUAMaHXD0
2015/11/08 20:49 | wmogiltfc@aol.com

# オークション ロレックス ジャンク

http://weirdweb.net/6ydPHHWIDT8クロエ パラティ 激安
オークション ロレックス ジャンク http://www.noisedesignlab.com/6ycPFVYRbV0
2015/11/17 23:58 | jckydp@aol.com

# フルラ レディース FURLA フルラ フルラ FURLA 財布 長財布 &#125

http://www.festo-bildungsfonds.de/2mcAKcABFK1アディダス ひょう柄 ハイカット
フルラ レディース FURLA フルラ フルラ FURLA 財布 長財布 レディース 733927 PM62 B30 00Z CHO ZIP AROUND XL ZIP AR http://suomibreikkia.com/5iYCZCGWPD2
2015/11/18 0:04 | kflgpgaesjh@aol.com

# バンズ スウェット

http://alc.md/soVLIcFbSK8ロレックス ブログ トライアル
バンズ スウェット http://www.windfishpro.com/2tNUVCDVTA9
2015/11/18 0:05 | kflgpgaesjh@aol.com

# チュードル タイガーモデル 価格

http://pulitoinfinito.it/qkMHPXMERa4プラダ カナパ 免税店
チュードル タイガーモデル 価格 http://wengphotography.com/6xJSXTNRWc5
2015/11/18 0:06 | kflgpgaesjh@aol.com

# バレンシアガ キャンバストート コピー

http://werestillhot.com/6vOCLYEaGR1シャネル メガネ 中古
バレンシアガ キャンバストート コピー http://hopelighthousecc.com/6qGOCUFCAY6
2015/11/18 0:06 | kflgpgaesjh@aol.com

# ケイトスペード 千葉

http://interior.st-lady.ru/2xcXMTbdKZ0アディダス ジャージ レディース セットアップ
ケイトスペード 千葉 http://wesleyfanfiction.net/6sUcXYKUOT9
2015/11/18 0:06 | kflgpgaesjh@aol.com

# ガガミラノ ナンバーネックレス

http://mehralborz.ac.ir/quKKbRHdDZ8コーチ バッグ 革 黒
ガガミラノ ナンバーネックレス http://geniusofchangdaichien.com/6cYWXcbXPG3
2015/11/18 0:07 | kflgpgaesjh@aol.com

# パテックフィリップ リリース

http://werestillhot.com/6vdOBUIHVZ9シャネル ソックス パンプス
パテックフィリップ リリース http://www.tommystokesdesign.com/6eBIOEMFCU6
2015/11/18 0:07 | kflgpgaesjh@aol.com

# エルメス ホース

http://mehralborz.ac.ir/quYSbGEbQY9コーチ 財布 メンズ 二つ折り
エルメス ホース http://www.militaerbuch.com/6sJMRCJdWC1
2015/11/18 0:07 | kflgpgaesjh@aol.com

# シャネル ウサギ ピアス

http://www.hiskishow.com/5fIYCcCIcF5IWCスーパーコピーアクアタイマークロノ クストーダイバーズ 2007 IW378101_IWC時計_ス
シャネル ウサギ ピアス http://wellsholidaypark.co.uk/6vMLUHZbTU4
2015/11/18 0:08 | kflgpgaesjh@aol.com

# アディダス ビジネス リュック

http://www.wibariatrics.com/6udXOdHGPM1コーチ アウトレット マリンピア神戸
アディダス ビジネス リュック http://www.acsimeri.it/2qUJKWbDMG3
2015/11/18 0:09 | kflgpgaesjh@aol.com

# ウブロ クラシック 1915 ルナロッサ

http://postpartumpain.org/6uYCKMKUdJ8コーチ ショルダーバッグ オールド
ウブロ クラシック 1915 ルナロッサ http://miranmasala.com/sySbMNYOWS2
2015/11/18 0:10 | kflgpgaesjh@aol.com

# バーバリー コート 補修

http://www.noisedesignlab.com/6aHWRNSdBD0グッチ レディース 新作
バーバリー コート 補修 http://hopelighthousecc.com/6wVBMcFMQX9
2015/11/18 0:10 | kflgpgaesjh@aol.com

# ブルガリ 時計 値段

http://www.wibariatrics.com/6aSQNMXXAT7ケイトスペード リュック
ブルガリ 時計 値段 http://www.windfishpro.com/ttNLcFSEHd4
2015/11/18 0:11 | kflgpgaesjh@aol.com

コメントの投稿

タイトル  
名前  
URL
コメント