1 名前:デフォルトの名無しさん [2008/02/09(土) 23:51:34 ] VisualStudio2008より追加された便利で強力な機能 統合言語クエリ (LINQ : Language Integrated Query) ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。 関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。 DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する 言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。 質問、便利なマイテクニックの発表、いろいろやっちゃってください。
207 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:10:28 ] > どう統合されてくのか 消えていくと言う運命もあるから、俺はもう少し様子見。
208 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:59:30 ] これだけ言語に食いこんだものが消えるというのはありえないと思うが。
209 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 06:48:16 ] いや、互換性のために機能としてはずっと残るかもしれないけど 新規には誰も使わなくなって結局放置と言うこと。 まあ、特攻する人も必要だから、>>208 は頑張ってくれ。
210 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 09:00:39 ] 小手先の道具として便利なLINQ to objectsくらいは残るでしょ そのほかはともかく
211 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:35:34 ] 別に「残らない」なんて断定してるわけじゃないよ。 俺はなくてもあまり困ってないし、「残らない可能性もある」ので ちょっと様子見してるだげ。 いいと思う人はどしどし使って広めてくれ。
212 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:25:27 ] LINQ便利ざんすよ? 特にLINQtoSQL。XMLはしらんがたぶん便利だろう。 今のだと出来ないこともあるけれど、出来るところのはかなり楽だ。
213 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:38:08 ] LINQ の意義の1つに、コレクションに対する操作がらみのメソッド名を統一したってのがあるから、 今後、LINQ to SQL とか LINQ to XML が廃れるようになろうとも、 コレクションとかサーバ問い合わせ系のライブラリ書く人は おそらくほぼ LINQ の規約に従ってメソッド名を付けると思う。 そういう意味では、廃れないと思うんだが。 クエリ式とか、IQueryable を介したサーバ問い合わせとかが廃れようとも、 命名規約の部分に関しては絶対残る。
214 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:43:37 ] MS の技術が「なくても困らない」と感じるのは、 MS がエンタープライズ相手の商売してるから、 個人で趣味で開発してる人へのアピール弱いせい。 あんまりホビープログラムでDBアプリとか書かないし。
215 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:10:13 ] LINQはEntity Frameworkなんかと密接に関わるからねー まだまだこれからの技術。
216 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 00:23:39 ] group by ... into g select new {value1 => g.hoge, value2 => g.fuga } みたいなLINQ書くとselect newの部分でvalue1とvalue2を生成するためにSQLサブクエリが生成されるんだけど、 これってgroup byだけで上手く書き直す方法ないんかなぁ。 というより、生成したクエリを最適化してくれる関数みたいなものはないんだろうか。
217 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 08:19:42 ] LINQ to SQL 自体、Entity Framework までの繋ぎの過渡技術だし、 今後 Entity Fx の側がよっぽど大ごけしないと LINQ to SQL のグレードアップは見込めない気もする。 LINQ とは別に、SQL 文の最適化ライブラリみたいなの探す方が早いかも。
218 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 08:25:31 ] EntityFWのクエリーインターフェースとして、LINQ使われるんじゃないの?(´・ω・`) 今のLINQのEntityうんたらがもっとしっかりしたものになるということ?
219 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 08:44:14 ] 裏側の最適化の話ね。 同じ LINQ クエリ式を書いたときに、 実際にどういう SQL 文が発行されるかという、 実装上の最適化の部分に関して、 LINQ to SQL の今後にはあんまり期待しない方がいいんじゃないかってこと。 まだ手をつけてる人が少なくて情報少ないけども、 将来を期待したいなら LINQ to Entity Framework の方使うこと考えるのがいいんじゃないかと。
220 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 08:46:06 ] LINQtoSQLがせいじゅくされてLINQtoEntityになるのかとおもっとった
221 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 20:45:39 ] りんきゅー><
222 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 20:13:37 ] ↓をメソッド形式で書きたいのですが、OrderByメソッドで複数のプロパティで ソートするのははどうすればいいですか? var v = from e in GetFoo() orderby e.Age, e.Name select e OrderBy二回せずに一回でさくっと書きたいです。
223 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:32:24 ] >>222 OrderBy(1つ目の条件).ThenBy(2つ目の条件) OrderBy 1回というのは無理。
224 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 20:14:01 ] >>223 ThenByって知らなかった。ありがと。
225 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 01:50:55 ] つか、そんなの条件式を二つ持つOrderByを自分で実装するがよろし
226 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 03:17:06 ] 引数可変にしてOrderBy〜ThenByに丸投げで、1分とかからずに実装できるな
227 名前:デフォルトの名無しさん [2008/09/19(金) 07:24:56 ] こうして車輪は四角に変容しバグを抱擁した後に再輸出されるのであった...
228 名前:デフォルトの名無しさん [2008/09/28(日) 23:54:29 ] LINQの遅延実行と即時実行は正直いらない気がする。 Aggreegate戻り値はIntegerだし、クエリ機能あれば十分なのでは。 LINQ TO XMLとか開発の現場でまず使うのは小数だろうし、可用性が低いよ。 VBチームの自己満足だね。いつものことだけど。
229 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 12:49:16 ] >>228 VBのAggregate構文のことかEnumerable.Aggregateのことを言ってるのかわからない。 Integerってどういう意味だろう、集計対象の型で集計されると思うけど。 VBのLinqは使いやすくしようと、文法やキーワードを増やしすぎて 収集がつかなくなってるという感じはする。C#と同じにしておけば良かったような。
230 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 14:30:31 ] VBはラムダ式が冗長だから拡張メソッドでクエリ書くと悲惨なことになる
231 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 14:54:49 ] 遅延実行と即時評価ってやたら強調されてるけど やっぱりC#のyield知らないとわかりにくいのかな
232 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 23:02:22 ] 言われてみるとyieldを知らない(あまり使った事がない)とすれば 即時実行でないのに違和感を感じるのも分かるな。
233 名前:デフォルトの名無しさん [2008/09/30(火) 11:58:27 ] いまさらだけど、yield Returnつう名前がややこすいよ!!
234 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:43:43 ] yield とかってどこからきたん?関数型?
235 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:47:50 ] Rubyのはクロージャ呼び出しだからPythonかなぁ。 Windows2x時代のAPIは関係ないと思う。
236 名前:デフォルトの名無しさん [2008/10/01(水) 02:17:48 ] ICONからきていると予想 Fiberはいつのまにか消えていたってオチかな
237 名前:[Fn]+[名無しさん] [2008/10/02(木) 00:00:54 ] てかDTDとかXMLスキーマサポートしてない段階でLINQ廃レは確定ぽ。。
238 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:06:53 ] それは LINQ to XML の問題であって、LINQ の問題じゃないのでは。
239 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 01:54:39 ] LINQ to XMLはもともとXmlDOMやXmlReaderの代替を狙ったものじゃなく、 standaloneのXMLや部分的なXMLを簡単に扱えることを目指したもの。 はじめからDTDやXMLSchemaはサポートしないことになっていた。 もっともnamespaceを中途半端なサポートはチトいただけないから改良は欲しい。 いっそなくすか、もっと充実させるかどちらかで。
240 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 08:21:03 ] スキーマはサポートしない、って確かにそうなんだけど ぶっちゃけあれ下層に XmlReader が使えるからでは ないのかと
241 名前:デフォルトの名無しさん [2008/10/02(木) 13:10:43 ] LINQはすんばらしい FOR EACH書かなくてすむし、べた書きのXMLもコードとして扱える。
242 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 00:46:47 ] C#だとエディットコンティニューが使えないのは結構痛い
243 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 10:10:47 ] エディットコンティニュかあ、x64だと使えないんだよなあ。 まあx86にすりゃいいんだけど、デフォがAnyCPUだからなあ。
244 名前:デフォルトの名無しさん [2008/10/11(土) 23:59:11 ] てかLINQってORACLEとかポスグレでも使えるのね。
245 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 00:58:14 ] >>244 LINQ to Entity の出た今となってはね。 MS SQL Server でしか使えないって言われてたのは、 SP1 入る前、LINQ to SQL の時代の話。
246 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 02:57:11 ] 別に Linq to SQL でも別データベースサポート可能だよ。 でも Linq -> Entity SQL がサポートされたから、Entity SQL -> ネイティブ SQL だけでいいじゃん=皆やる気ナスなだけで。
247 名前:デフォルトの名無しさん [2008/10/12(日) 20:47:40 ] Linq to Entityが生成する生のSQLを確認する方法を教えてください。
248 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 00:46:17 ] それは実行される前に?恒常的に? そうじゃないならログ見りゃいいと思うけど・・・
249 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 17:15:00 ] >>248 実行時でかまいません。 Linq to SQLのようのDataContext.Logプロパティにあたるものが見当たらないようです。 またSystem.DiagnosticsのTraceやDebugでも確認できませんでした。 探し方が悪いのかもしれませんがSQLのログを出力する方法を教えてください。
250 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 21:39:14 ] だから SQL Server なら確かプロファイラ起動してトレースの開始で… と記憶を頼りにぐぐって気づいたんだが Express にはないのか このツール。おおう。それとごめんトレースだった 2005 ならこんなの見つけたけど ttp://code.google.com/p/sqlexpressprofiler/
251 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 03:19:46 ] タイプセーフなデータベースプログラミング ttp://d.hatena.ne.jp/higayasuo/20081014/1223969275 拡張メソッドとラムダ式と式木と匿名型とvarとあって良かったと思える瞬間。
252 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 17:46:42 ] Entity FrameworkをLinqなしで使うと2番目の例っぽくなるね。
253 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 19:35:37 ] 多言語でLinqのパクリを作ろうと思っても、言語仕様のサポートが無いと ああいう風にせざるをえないんだよな。
254 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 22:35:24 ] まあ、だからC# 3.0がああなったわけで。
255 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 22:53:01 ] その辺Booなら自分で言語使用作れるかと
256 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 10:13:17 ] 実際に動くものを作ってから言え
257 名前:デフォルトの名無しさん [2008/10/27(月) 22:19:23 ] 時間ができたので久しぶりの >>1 です、だんだん慣れてきた、半年続けた結果分かったことLINQスゲー使えます という訳でみんなこれ勉強しろ!! とりあえずアドバイス、まずは yield return / yield break が自在に使いこなせるようになるといいです。 使い方のコツ 1.シーケンス( IEnumerable<T> 、データベースで言えばテーブル)の生成 2.from ... または System.Linq.Enumerable で加工(繰り返し) 3.ToArray() , ToList() , ToDictionary() , All() , Any() 等で結果生成。 これが標準パターン 元の列を作る → 加工 → 加工 ・・・ → 加工 → 配列化 基本的にこればっかりです。 ちなみに LINQ が真の力を発揮するのはデータベースではなく、日常的に使う配列やオブジェクトです。 いままではデータベースではクエリで簡単に実行できても、プログラム中ではできずと やむなくデータベースに一旦突っ込んでやるか、フルスクラッチで同等機能を作り出すかと、 無意味なプログラム実行環境の大規模化を引き起こしていました、これが無くなります。
258 名前:1 [2008/10/27(月) 22:20:21 ] とにかく『加工元が簡単に作れない』事には、LINQ は使い物になりません。 という訳でシーケンスの作り方のコツ 配列やList等は、IEnumerable<T> 持ちなのでそのまんまシーケンスその物である、これは当たり前。 *.バラバラな物をシーケンスにするコツ、『適当』に yield return をばらまく このあまりに馬鹿らしく単純な使い方になかなか気付けなかったw 例 class Test { int A; string B; // メンバーを片っ端からシーケンスにする IEnumerable<object> Members() { yield return A; yield return B; } public override bool Equals(object obj) { Test obj2 = obj as Test; if(obj2==null) return false; return this.Members().SequenceEqual(obj2.Members()); } public override int GetHashCode() { return this.Members().Aggregate(0, (acc, element) => acc ^ element.GetHashCode()); } } *.IEnumerable<T> を持っていないライブラリの古い糞クラス用にアダプターやヘルパー関数をたっぷり作っておくこと!! 例 IEnumerable<T> CreateEnumerable<T>(Func<int> getCount, Func<int, T> getItem) { for (int i = 0; i < getCount(); ++i) yield return getItem(i); } 標準で .Net Framework に準備して欲しい・・・
259 名前:1 [2008/10/27(月) 22:21:21 ] 二以上のシーケンスを同時に加工するときのコツ 1.ToArray() , ToList() 等で、一旦配列にする。 2.Enumerable.Range( 0 , seq.Count() ) で配列の添え字を列挙して使う(なかなか気付けなかったw) 例 var tmp1 = 元シーケンス1.ToList(); var tmp2 = 元シーケンス2.ToList(); var tmp3 = from index in Enumerable.Range(0,tmp1.Count-1) select new { tmp1[index] , tmp2[index] }; 3.ToDictionary や ToLookup を使って連想配列を経由するとさらに色々な事が簡単に 4.他にも色々便利なコンテナもあるので To○○ を拡張を沢山作っておくのがコツ 標準で .Net Framework に準備して欲しい・・・
260 名前:1 [2008/10/27(月) 22:22:05 ] ありそうで実は無くて意外不便なもの 1.Excelを使うと良く登場するパータンで、前後の要素にアクセスしながら新しい列を作るような手段が実はない [ ][0] [3][=A2] [4][=B2+A3] [6][=B3+A4] [2][=B4+A5] [5][=B5+A6] 左の列を元に、右の列のようなシーケンスを作る関数を作っておくと便利、汎用関数も簡単につくれる。 これなかった頃よく似た関数をあたりにぶちまけてしまった .Net Framework に準備して欲しい・・・ 2.ツリー構造の全要素列挙、汎用関数も簡単につくれる。 これなかった頃よく似た関数をあたりにぶちまけてしまった .Net Framework に準備して欲しい・・・ 3.コントロールブレイク(コボラーの必殺技)も作っておくと便利。 COBOLは実は触ったことが一度もないのですが、どうも色々便利ノウハウが彼らにはあるようです。 現在鋭意開拓中
261 名前:デフォルトの名無しさん [2008/10/27(月) 22:22:31 ] Enumerableにある関数は、全部使い込みましょう、特に重要なのは シーケンスを混ぜて一つのシーケンスを作る系 Enumerable.Concat() Enumerable.Intersect() Enumerable.Union() Enumerable.Except() シーケンスの先頭や部分を取得する系 Enumerable.First() Enumerable.FirstOrDefault() Enumerable.Take() Enumerable.Skip() 全シーケンスのチェック、これ以上複雑な物は foreach の方がかえって分かりやすい気がする。 Enumerable.All() Enumerable.Any() Enumerable.SequenceEqual() 要素の型変換、指定型のみ抽出 Enumerable.Cast() Enumerable.OfType() マニュアルが余りに理解不能な文書なので、動作を確かめながら自分の言葉で整理しておくと便利です。 生成用関数、加工用関数、結果生成用関数の三つに分類してみると、すっきりしてきます。
262 名前:デフォルトの名無しさん [2008/10/27(月) 23:24:32 ] サンプル通りにやってもAddの定義が無いのですが‥‥ www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46703&forum=7&2 ぶっちゃけ、この常連しんさんと全く同じ質問なのですが、 この人、質問して、自己解決して、回答書いてないので‥‥
263 名前:デフォルトの名無しさん [2008/10/27(月) 23:38:24 ] 関数型プログラム言語触れば別に驚くことでもない
264 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 01:43:36 ] Firstも使うけどSingleもよく使う
265 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 03:14:06 ] >>261 最も基本の Select, SelectMany が抜けてる >>262 多分、LINQ to SQLだよな Add がどこから出てきたのか知らんが、対象がTable<T>なら データ操作にはInsert〜とかDelete〜あたりをつかう
266 名前:262 mailto:sage [2008/10/28(火) 13:58:59 ] >>265 どうもありがとうございます。>>262 のサイトからさらっと試し始めたので‥‥ InsertOnSubmitを使うんだと分りました。 たぶん、あのサイトは記述が古いんですね。 とっても面白いので、本でも買って真面目に勉強します‥‥
267 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:52:37 ] >>265 基本といえば Where もないね クエリ式で書けるものは入れてないのかな?
268 名前:デフォルトの名無しさん [2008/10/31(金) 16:20:09 ] これってORマッピングツールみたいなものか?
269 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 19:53:08 ] >>267 ラムダで書くと見た目が不必要に複雑になるからな
270 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 19:59:39 ] C#の方は XML to LINQ を無理やりC#構文で書かせるのはなんとかしてほしい。 データ操作まで無理やりオブジェクト指向にするとかえって記述がグダグダになるんだよ。 データ操作は特化した記述がいい。
271 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:27:08 ] 同じ記述でXMLが扱える所が利点なのに? わざわざ特化した記述作って、新しく覚えないといけなかったら魅力感じないな
272 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:35:02 ] もしかして関数型構築のこと?
273 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:23:22 ] >>269 全部クエリ式で書けない場合は,joinとかletとか使わない限りは全部拡張メソッドで俺は書いちゃうな
274 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 02:17:30 ] クエリ式みたいなものを自由に拡張できるようにして欲しいお(´・ω・`)
275 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 02:29:34 ] そんなことしたらカオスになるじゃないか
276 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 09:41:51 ] クエリ式は抽象化の度合いを下げないまま、 foreachをネストさせた時の様に変数を扱えるのが便利だね。 これを拡張可能にすると・・・関数型っぽくなる気がする。
277 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 09:50:56 ] >>275 しかしそれがいい・ >>276 調子に乗ってクエリ式つなげてくと遅くなるらしいからなぁ・・・ 記述方法は大好きなんだが。
278 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 10:45:55 ] >>277 遅くなるってのは意外と平気。 かなりバカに書かない限りはforeach書くのと比べて1割くらいしかパフォーマンス落ちない。
279 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 11:38:48 ] 遅延評価を繋げるだけならほとんど遅くはならないはず
280 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 11:49:52 ] 遅い速いは相対的なものだからどのレベルで遅いといってるのか示さないと議論にならない。 非常に細かいパフォーマンスを気にしているなら、 ラムダ式(デリゲート)を使うので関数の呼び出しがインライン化されないとか、 SumやMaxなど集計系メソッドを複数使った場合にちょっと効率の悪いことをしているとか そんなところだね。
281 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:18:38 ] Reverseってバッファ使うから即時実行だと思ってたんだけど、Reverseの呼び出し時じゃなくて 最初のMoveNextの呼び出しの時点ですべての結果が決まるから遅延実行になるのか 速い遅い気にするならどういう実装になってるか気にしないといけないね
282 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:31:55 ] 3.0出始めの時に誰かが、foreachで条件とか変換とか並べて書いたのと、クエリ式とか並べて頴田の比べて結構違いがあったような。
283 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:37:47 ] Linq to ObjectとLinq to SQLは分けないと話が食い違うから要注意。
284 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:44:36 ] この文脈でどう読んだらto SQLになるのか
285 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 12:50:21 ] 4.0の紹介ビデオみてるが、よいなぁこれ・・・ 来年早々にも出してくれんかな・・・
286 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 13:11:04 ] PLINQとか並列化関係いいなぁ・・
287 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 00:04:48 ] 4.0の紹介ビデオってmsdnにある?
288 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 00:12:26 ] channel9.msdn.com/pdc2008/TL16/ ちなみに、パスを1段削って、 channel9.msdn.com/pdc2008/ にするとPDCのセッションの一覧が出てくる。
289 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 00:31:16 ] thx
290 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 01:31:48 ] C#インタプリタ、すげぇ!
291 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 09:38:50 ] >>282 ufcpp.net/study/csharp/sp3_linqreconstruct.html#iterator これ? foreach で置き換えるだけじゃたいして性能変わらない。 ここで違いが出てるのはそれの次の節の話で、 「if をループの外に出せ」と同じ原理で 「可能な限り where を from の上に」ってやるとパフォーマンス結構変わる。
292 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 10:16:15 ] LINQのクエリ式とSQLの一番の違いがプランナの有無。 クエリ式は書いた順番どおりに処理していくが、 SQLはプランナが最適な実行計画を立てる。
293 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 10:39:15 ] LinqtoObjectも気合い入れてプロバイダ書けばプランナ相当のもの記述可能? いや書く気毛頭無いですが
294 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 12:26:24 ] やろうとおもえばLINQでスクリプト言語書けるよ
295 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:52:31 ] >> 294 出だしだけでもKWSK
296 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 17:07:42 ] LINQ to SQLって無くなるの? なんつーか、ぶちまければ良いってもんじゃねぇだろ。 そんなのはオプソ系に任せとけよ。
297 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:08:39 ] 何で無くなると思ったのさ?
298 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:35:18 ] なくなるっつーかLinq to Entityに置き換えでしょ。 別に今のところは対して書き方が違うわけじゃないし Linq to Entity完成までの代打的存在として十分用を果たしたような。
299 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:44:48 ] うむ。かなりの部分でSQLの開発楽にしてくれた。 ストーリーにちゃんと沿わないと痛い目あうがなwww
300 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 23:18:07 ] >>296 開発が止まるだけで今後も当面は.NET Frameworkに標準搭載が続くんじゃないの?
301 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:12:05 ] Entity Frameworkは絶対こける。 間違いない。
302 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:44:11 ] >>301 まあVer.3ぐらいになるまでは毎回大変更の嵐だろうな。
303 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 17:23:24 ] Entity FrameworkはLinq to SQLの問題点が色々と解決されてるんだけど デザイナが使いにくすぎる。 RailsのActiveRecordみたいに ちょこちょこっとクラスに属性を付ければモデル完成、 ってのフレームワークだったらよかったのに。
304 名前:デフォルトの名無しさん [2008/11/20(木) 12:30:10 ] LINQ to SQLってADO.NETより目茶苦茶いいな。 更新系では、生のSQL文に完全なWHERE句を入れてくれるし、 非接続型・楽観的制御(←赤間さん流)では文句なし。 あと、生SQLのサブクエリ相当の組み合わせを段階を踏んで書けるのもいい。 デバッグも迅速になりそう。
305 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 15:06:45 ] 俺、LINQ to P2P で当てたら結婚すんだ。
306 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 21:51:19 ] >>304 消える運命にあるが
307 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 22:15:10 ] なんらかの形で残るよ。使ってみれば、この方向性で進化していくんだろうと判る。 今のはちょっとSQL Serverに特化しすぎてるからディスコンかもしれないけどさ。