VisualStudio2008より追加された便利で強力な機能
統合言語クエリ (LINQ : Language Integrated Query)
ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。
関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。
DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する
言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。
質問、便利なマイテクニックの発表、いろいろやっちゃってください。
探検
【VB.NET】LINQ友の会【C#, C♯, C#】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2008/02/09(土) 23:51:34200デフォルトの名無しさん
2008/07/27(日) 11:06:25 >>199
単に .Select メソッド(あるいは拡張メソッド)とか実装するだけ。
LINQ to SQL みたいなことしたければ、
LINQ の勉強というよりは、Expression Trees の勉強が必要。
で、LINQ がらみの記事は結構おおいけど、
Expression Trees はあんまり見ないなぁ。
単に .Select メソッド(あるいは拡張メソッド)とか実装するだけ。
LINQ to SQL みたいなことしたければ、
LINQ の勉強というよりは、Expression Trees の勉強が必要。
で、LINQ がらみの記事は結構おおいけど、
Expression Trees はあんまり見ないなぁ。
201デフォルトの名無しさん
2008/07/27(日) 12:23:14202デフォルトの名無しさん
2008/07/27(日) 12:55:38 Expression Trees の方は、↓に多少サンプルあり。
http://ufcpp.net/study/csharp/sp3_linqreconstruct.html
LINQ to SQL みたいなことしたければ、IQueryable でググってみるといいんじゃないかと。
http://ufcpp.net/study/csharp/sp3_linqreconstruct.html
LINQ to SQL みたいなことしたければ、IQueryable でググってみるといいんじゃないかと。
203デフォルトの名無しさん
2008/07/27(日) 13:14:37 MSDNのこれも読んでおくといいかも。
ttp://msdn.microsoft.com/ja-jp/library/bb546158.aspx
ttp://msdn.microsoft.com/ja-jp/library/bb882640.aspx
ttp://msdn.microsoft.com/ja-jp/library/bb546158.aspx
ttp://msdn.microsoft.com/ja-jp/library/bb882640.aspx
204デフォルトの名無しさん
2008/08/31(日) 11:34:15 >>198
LINQの本が少ない中、この本はお薦め。
LINQを構成する基礎や、現在のバージョンで、できる事できない事、
やってはダメな事が書かれている。
.netとSQLを使って仕事している人ならLINQがどういう物か理解できる。
少なくともこの本レベルの事を理解していないと知らずに地雷を埋め込むことになる。
LINQの本が少ない中、この本はお薦め。
LINQを構成する基礎や、現在のバージョンで、できる事できない事、
やってはダメな事が書かれている。
.netとSQLを使って仕事している人ならLINQがどういう物か理解できる。
少なくともこの本レベルの事を理解していないと知らずに地雷を埋め込むことになる。
205デフォルトの名無しさん
2008/08/31(日) 18:22:46 LINQは、VSに付いてくるC#のサンプルコードだけで十分理解できるでしょ。
206デフォルトの名無しさん
2008/08/31(日) 23:44:43 LINQがこれから他のテクノロジとどう統合されてくのかよくわからん(´・ω・`)
207デフォルトの名無しさん
2008/09/01(月) 00:10:28 > どう統合されてくのか
消えていくと言う運命もあるから、俺はもう少し様子見。
消えていくと言う運命もあるから、俺はもう少し様子見。
208デフォルトの名無しさん
2008/09/01(月) 00:59:30 これだけ言語に食いこんだものが消えるというのはありえないと思うが。
209デフォルトの名無しさん
2008/09/01(月) 06:48:16210デフォルトの名無しさん
2008/09/01(月) 09:00:39 小手先の道具として便利なLINQ to objectsくらいは残るでしょ
そのほかはともかく
そのほかはともかく
211デフォルトの名無しさん
2008/09/01(月) 21:35:34 別に「残らない」なんて断定してるわけじゃないよ。
俺はなくてもあまり困ってないし、「残らない可能性もある」ので
ちょっと様子見してるだげ。
いいと思う人はどしどし使って広めてくれ。
俺はなくてもあまり困ってないし、「残らない可能性もある」ので
ちょっと様子見してるだげ。
いいと思う人はどしどし使って広めてくれ。
212デフォルトの名無しさん
2008/09/01(月) 23:25:27 LINQ便利ざんすよ?
特にLINQtoSQL。XMLはしらんがたぶん便利だろう。
今のだと出来ないこともあるけれど、出来るところのはかなり楽だ。
特にLINQtoSQL。XMLはしらんがたぶん便利だろう。
今のだと出来ないこともあるけれど、出来るところのはかなり楽だ。
213デフォルトの名無しさん
2008/09/01(月) 23:38:08 LINQ の意義の1つに、コレクションに対する操作がらみのメソッド名を統一したってのがあるから、
今後、LINQ to SQL とか LINQ to XML が廃れるようになろうとも、
コレクションとかサーバ問い合わせ系のライブラリ書く人は
おそらくほぼ LINQ の規約に従ってメソッド名を付けると思う。
そういう意味では、廃れないと思うんだが。
クエリ式とか、IQueryable を介したサーバ問い合わせとかが廃れようとも、
命名規約の部分に関しては絶対残る。
今後、LINQ to SQL とか LINQ to XML が廃れるようになろうとも、
コレクションとかサーバ問い合わせ系のライブラリ書く人は
おそらくほぼ LINQ の規約に従ってメソッド名を付けると思う。
そういう意味では、廃れないと思うんだが。
クエリ式とか、IQueryable を介したサーバ問い合わせとかが廃れようとも、
命名規約の部分に関しては絶対残る。
214デフォルトの名無しさん
2008/09/01(月) 23:43:37 MS の技術が「なくても困らない」と感じるのは、
MS がエンタープライズ相手の商売してるから、
個人で趣味で開発してる人へのアピール弱いせい。
あんまりホビープログラムでDBアプリとか書かないし。
MS がエンタープライズ相手の商売してるから、
個人で趣味で開発してる人へのアピール弱いせい。
あんまりホビープログラムでDBアプリとか書かないし。
215デフォルトの名無しさん
2008/09/02(火) 00:10:13 LINQはEntity Frameworkなんかと密接に関わるからねー
まだまだこれからの技術。
まだまだこれからの技術。
216デフォルトの名無しさん
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だけで上手く書き直す方法ないんかなぁ。
というより、生成したクエリを最適化してくれる関数みたいなものはないんだろうか。
みたいなLINQ書くとselect newの部分でvalue1とvalue2を生成するためにSQLサブクエリが生成されるんだけど、
これってgroup byだけで上手く書き直す方法ないんかなぁ。
というより、生成したクエリを最適化してくれる関数みたいなものはないんだろうか。
217デフォルトの名無しさん
2008/09/03(水) 08:19:42 LINQ to SQL 自体、Entity Framework までの繋ぎの過渡技術だし、
今後 Entity Fx の側がよっぽど大ごけしないと
LINQ to SQL のグレードアップは見込めない気もする。
LINQ とは別に、SQL 文の最適化ライブラリみたいなの探す方が早いかも。
今後 Entity Fx の側がよっぽど大ごけしないと
LINQ to SQL のグレードアップは見込めない気もする。
LINQ とは別に、SQL 文の最適化ライブラリみたいなの探す方が早いかも。
218デフォルトの名無しさん
2008/09/03(水) 08:25:31 EntityFWのクエリーインターフェースとして、LINQ使われるんじゃないの?(´・ω・`)
今のLINQのEntityうんたらがもっとしっかりしたものになるということ?
今のLINQのEntityうんたらがもっとしっかりしたものになるということ?
219デフォルトの名無しさん
2008/09/03(水) 08:44:14 裏側の最適化の話ね。
同じ LINQ クエリ式を書いたときに、
実際にどういう SQL 文が発行されるかという、
実装上の最適化の部分に関して、
LINQ to SQL の今後にはあんまり期待しない方がいいんじゃないかってこと。
まだ手をつけてる人が少なくて情報少ないけども、
将来を期待したいなら LINQ to Entity Framework の方使うこと考えるのがいいんじゃないかと。
同じ LINQ クエリ式を書いたときに、
実際にどういう SQL 文が発行されるかという、
実装上の最適化の部分に関して、
LINQ to SQL の今後にはあんまり期待しない方がいいんじゃないかってこと。
まだ手をつけてる人が少なくて情報少ないけども、
将来を期待したいなら LINQ to Entity Framework の方使うこと考えるのがいいんじゃないかと。
220デフォルトの名無しさん
2008/09/03(水) 08:46:06 LINQtoSQLがせいじゅくされてLINQtoEntityになるのかとおもっとった
221デフォルトの名無しさん
2008/09/11(木) 20:45:39 りんきゅー><
222デフォルトの名無しさん
2008/09/17(水) 20:13:37 ↓をメソッド形式で書きたいのですが、OrderByメソッドで複数のプロパティで
ソートするのははどうすればいいですか?
var v = from e in GetFoo() orderby e.Age, e.Name select e
OrderBy二回せずに一回でさくっと書きたいです。
ソートするのははどうすればいいですか?
var v = from e in GetFoo() orderby e.Age, e.Name select e
OrderBy二回せずに一回でさくっと書きたいです。
223デフォルトの名無しさん
2008/09/17(水) 22:32:24224デフォルトの名無しさん
2008/09/18(木) 20:14:01 >>223
ThenByって知らなかった。ありがと。
ThenByって知らなかった。ありがと。
225デフォルトの名無しさん
2008/09/19(金) 01:50:55 つか、そんなの条件式を二つ持つOrderByを自分で実装するがよろし
226デフォルトの名無しさん
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チームの自己満足だね。いつものことだけど。
Aggreegate戻り値はIntegerだし、クエリ機能あれば十分なのでは。
LINQ TO XMLとか開発の現場でまず使うのは小数だろうし、可用性が低いよ。
VBチームの自己満足だね。いつものことだけど。
229デフォルトの名無しさん
2008/09/29(月) 12:49:16 >>228
VBのAggregate構文のことかEnumerable.Aggregateのことを言ってるのかわからない。
Integerってどういう意味だろう、集計対象の型で集計されると思うけど。
VBのLinqは使いやすくしようと、文法やキーワードを増やしすぎて
収集がつかなくなってるという感じはする。C#と同じにしておけば良かったような。
VBのAggregate構文のことかEnumerable.Aggregateのことを言ってるのかわからない。
Integerってどういう意味だろう、集計対象の型で集計されると思うけど。
VBのLinqは使いやすくしようと、文法やキーワードを増やしすぎて
収集がつかなくなってるという感じはする。C#と同じにしておけば良かったような。
230デフォルトの名無しさん
2008/09/29(月) 14:30:31 VBはラムダ式が冗長だから拡張メソッドでクエリ書くと悲惨なことになる
231デフォルトの名無しさん
2008/09/29(月) 14:54:49 遅延実行と即時評価ってやたら強調されてるけど
やっぱりC#のyield知らないとわかりにくいのかな
やっぱりC#のyield知らないとわかりにくいのかな
232デフォルトの名無しさん
2008/09/29(月) 23:02:22 言われてみるとyieldを知らない(あまり使った事がない)とすれば
即時実行でないのに違和感を感じるのも分かるな。
即時実行でないのに違和感を感じるのも分かるな。
233デフォルトの名無しさん
2008/09/30(火) 11:58:27 いまさらだけど、yield Returnつう名前がややこすいよ!!
234デフォルトの名無しさん
2008/09/30(火) 23:43:43 yield とかってどこからきたん?関数型?
235デフォルトの名無しさん
2008/09/30(火) 23:47:50 Rubyのはクロージャ呼び出しだからPythonかなぁ。
Windows2x時代のAPIは関係ないと思う。
Windows2x時代のAPIは関係ないと思う。
236デフォルトの名無しさん
2008/10/01(水) 02:17:48 ICONからきていると予想
Fiberはいつのまにか消えていたってオチかな
Fiberはいつのまにか消えていたってオチかな
237[Fn]+[名無しさん]
2008/10/02(木) 00:00:54 てかDTDとかXMLスキーマサポートしてない段階でLINQ廃レは確定ぽ。。
238デフォルトの名無しさん
2008/10/02(木) 00:06:53 それは LINQ to XML の問題であって、LINQ の問題じゃないのでは。
239デフォルトの名無しさん
2008/10/02(木) 01:54:39 LINQ to XMLはもともとXmlDOMやXmlReaderの代替を狙ったものじゃなく、
standaloneのXMLや部分的なXMLを簡単に扱えることを目指したもの。
はじめからDTDやXMLSchemaはサポートしないことになっていた。
もっともnamespaceを中途半端なサポートはチトいただけないから改良は欲しい。
いっそなくすか、もっと充実させるかどちらかで。
standaloneのXMLや部分的なXMLを簡単に扱えることを目指したもの。
はじめからDTDやXMLSchemaはサポートしないことになっていた。
もっともnamespaceを中途半端なサポートはチトいただけないから改良は欲しい。
いっそなくすか、もっと充実させるかどちらかで。
240デフォルトの名無しさん
2008/10/02(木) 08:21:03 スキーマはサポートしない、って確かにそうなんだけど
ぶっちゃけあれ下層に XmlReader が使えるからでは
ないのかと
ぶっちゃけあれ下層に XmlReader が使えるからでは
ないのかと
241デフォルトの名無しさん
2008/10/02(木) 13:10:43 LINQはすんばらしい
FOR EACH書かなくてすむし、べた書きのXMLもコードとして扱える。
FOR EACH書かなくてすむし、べた書きのXMLもコードとして扱える。
242デフォルトの名無しさん
2008/10/03(金) 00:46:47 C#だとエディットコンティニューが使えないのは結構痛い
243デフォルトの名無しさん
2008/10/03(金) 10:10:47 エディットコンティニュかあ、x64だと使えないんだよなあ。
まあx86にすりゃいいんだけど、デフォがAnyCPUだからなあ。
まあx86にすりゃいいんだけど、デフォがAnyCPUだからなあ。
244デフォルトの名無しさん
2008/10/11(土) 23:59:11 てかLINQってORACLEとかポスグレでも使えるのね。
245デフォルトの名無しさん
2008/10/12(日) 00:58:14246デフォルトの名無しさん
2008/10/12(日) 02:57:11 別に Linq to SQL でも別データベースサポート可能だよ。
でも Linq -> Entity SQL がサポートされたから、Entity SQL ->
ネイティブ SQL だけでいいじゃん=皆やる気ナスなだけで。
でも Linq -> Entity SQL がサポートされたから、Entity SQL ->
ネイティブ SQL だけでいいじゃん=皆やる気ナスなだけで。
247デフォルトの名無しさん
2008/10/12(日) 20:47:40 Linq to Entityが生成する生のSQLを確認する方法を教えてください。
248デフォルトの名無しさん
2008/10/13(月) 00:46:17 それは実行される前に?恒常的に?
そうじゃないならログ見りゃいいと思うけど・・・
そうじゃないならログ見りゃいいと思うけど・・・
249デフォルトの名無しさん
2008/10/13(月) 17:15:00 >>248
実行時でかまいません。
Linq to SQLのようのDataContext.Logプロパティにあたるものが見当たらないようです。
またSystem.DiagnosticsのTraceやDebugでも確認できませんでした。
探し方が悪いのかもしれませんがSQLのログを出力する方法を教えてください。
実行時でかまいません。
Linq to SQLのようのDataContext.Logプロパティにあたるものが見当たらないようです。
またSystem.DiagnosticsのTraceやDebugでも確認できませんでした。
探し方が悪いのかもしれませんがSQLのログを出力する方法を教えてください。
250デフォルトの名無しさん
2008/10/13(月) 21:39:14 だから SQL Server なら確かプロファイラ起動してトレースの開始で…
と記憶を頼りにぐぐって気づいたんだが Express にはないのか
このツール。おおう。それとごめんトレースだった
2005 ならこんなの見つけたけど
ttp://code.google.com/p/sqlexpressprofiler/
と記憶を頼りにぐぐって気づいたんだが Express にはないのか
このツール。おおう。それとごめんトレースだった
2005 ならこんなの見つけたけど
ttp://code.google.com/p/sqlexpressprofiler/
251デフォルトの名無しさん
2008/10/17(金) 03:19:46 タイプセーフなデータベースプログラミング
ttp://d.hatena.ne.jp/higayasuo/20081014/1223969275
拡張メソッドとラムダ式と式木と匿名型とvarとあって良かったと思える瞬間。
ttp://d.hatena.ne.jp/higayasuo/20081014/1223969275
拡張メソッドとラムダ式と式木と匿名型とvarとあって良かったと思える瞬間。
252デフォルトの名無しさん
2008/10/17(金) 17:46:42 Entity FrameworkをLinqなしで使うと2番目の例っぽくなるね。
253デフォルトの名無しさん
2008/10/17(金) 19:35:37 多言語でLinqのパクリを作ろうと思っても、言語仕様のサポートが無いと
ああいう風にせざるをえないんだよな。
ああいう風にせざるをえないんだよな。
254デフォルトの名無しさん
2008/10/17(金) 22:35:24 まあ、だからC# 3.0がああなったわけで。
255デフォルトの名無しさん
2008/10/17(金) 22:53:01 その辺Booなら自分で言語使用作れるかと
256デフォルトの名無しさん
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 が真の力を発揮するのはデータベースではなく、日常的に使う配列やオブジェクトです。
いままではデータベースではクエリで簡単に実行できても、プログラム中ではできずと
やむなくデータベースに一旦突っ込んでやるか、フルスクラッチで同等機能を作り出すかと、
無意味なプログラム実行環境の大規模化を引き起こしていました、これが無くなります。
という訳でみんなこれ勉強しろ!!
とりあえずアドバイス、まずは yield return / yield break が自在に使いこなせるようになるといいです。
使い方のコツ
1.シーケンス( IEnumerable<T> 、データベースで言えばテーブル)の生成
2.from ... または System.Linq.Enumerable で加工(繰り返し)
3.ToArray() , ToList() , ToDictionary() , All() , Any() 等で結果生成。
これが標準パターン
元の列を作る → 加工 → 加工 ・・・ → 加工 → 配列化
基本的にこればっかりです。
ちなみに LINQ が真の力を発揮するのはデータベースではなく、日常的に使う配列やオブジェクトです。
いままではデータベースではクエリで簡単に実行できても、プログラム中ではできずと
やむなくデータベースに一旦突っ込んでやるか、フルスクラッチで同等機能を作り出すかと、
無意味なプログラム実行環境の大規模化を引き起こしていました、これが無くなります。
2581
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 に準備して欲しい・・・
という訳でシーケンスの作り方のコツ
配列や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 に準備して欲しい・・・
2591
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 に準備して欲しい・・・
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 に準備して欲しい・・・
2601
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は実は触ったことが一度もないのですが、どうも色々便利ノウハウが彼らにはあるようです。
現在鋭意開拓中
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()
マニュアルが余りに理解不能な文書なので、動作を確かめながら自分の言葉で整理しておくと便利です。
生成用関数、加工用関数、結果生成用関数の三つに分類してみると、すっきりしてきます。
シーケンスを混ぜて一つのシーケンスを作る系
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の定義が無いのですが‥‥
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46703&forum=7&2
ぶっちゃけ、この常連しんさんと全く同じ質問なのですが、
この人、質問して、自己解決して、回答書いてないので‥‥
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46703&forum=7&2
ぶっちゃけ、この常連しんさんと全く同じ質問なのですが、
この人、質問して、自己解決して、回答書いてないので‥‥
263デフォルトの名無しさん
2008/10/27(月) 23:38:24 関数型プログラム言語触れば別に驚くことでもない
264デフォルトの名無しさん
2008/10/28(火) 01:43:36 Firstも使うけどSingleもよく使う
265デフォルトの名無しさん
2008/10/28(火) 03:14:06266262
2008/10/28(火) 13:58:59267デフォルトの名無しさん
2008/10/28(火) 17:52:37268デフォルトの名無しさん
2008/10/31(金) 16:20:09 これってORマッピングツールみたいなものか?
269デフォルトの名無しさん
2008/10/31(金) 19:53:08 >>267
ラムダで書くと見た目が不必要に複雑になるからな
ラムダで書くと見た目が不必要に複雑になるからな
270デフォルトの名無しさん
2008/10/31(金) 19:59:39 C#の方は XML to LINQ を無理やりC#構文で書かせるのはなんとかしてほしい。
データ操作まで無理やりオブジェクト指向にするとかえって記述がグダグダになるんだよ。
データ操作は特化した記述がいい。
データ操作まで無理やりオブジェクト指向にするとかえって記述がグダグダになるんだよ。
データ操作は特化した記述がいい。
271デフォルトの名無しさん
2008/10/31(金) 20:27:08 同じ記述でXMLが扱える所が利点なのに?
わざわざ特化した記述作って、新しく覚えないといけなかったら魅力感じないな
わざわざ特化した記述作って、新しく覚えないといけなかったら魅力感じないな
272デフォルトの名無しさん
2008/10/31(金) 20:35:02 もしかして関数型構築のこと?
273デフォルトの名無しさん
2008/10/31(金) 22:23:22 >>269
全部クエリ式で書けない場合は,joinとかletとか使わない限りは全部拡張メソッドで俺は書いちゃうな
全部クエリ式で書けない場合は,joinとかletとか使わない限りは全部拡張メソッドで俺は書いちゃうな
274デフォルトの名無しさん
2008/11/01(土) 02:17:30 クエリ式みたいなものを自由に拡張できるようにして欲しいお(´・ω・`)
275デフォルトの名無しさん
2008/11/01(土) 02:29:34 そんなことしたらカオスになるじゃないか
276デフォルトの名無しさん
2008/11/01(土) 09:41:51 クエリ式は抽象化の度合いを下げないまま、
foreachをネストさせた時の様に変数を扱えるのが便利だね。
これを拡張可能にすると・・・関数型っぽくなる気がする。
foreachをネストさせた時の様に変数を扱えるのが便利だね。
これを拡張可能にすると・・・関数型っぽくなる気がする。
277デフォルトの名無しさん
2008/11/01(土) 09:50:56278デフォルトの名無しさん
2008/11/01(土) 10:45:55279デフォルトの名無しさん
2008/11/01(土) 11:38:48 遅延評価を繋げるだけならほとんど遅くはならないはず
280デフォルトの名無しさん
2008/11/01(土) 11:49:52 遅い速いは相対的なものだからどのレベルで遅いといってるのか示さないと議論にならない。
非常に細かいパフォーマンスを気にしているなら、
ラムダ式(デリゲート)を使うので関数の呼び出しがインライン化されないとか、
SumやMaxなど集計系メソッドを複数使った場合にちょっと効率の悪いことをしているとか
そんなところだね。
非常に細かいパフォーマンスを気にしているなら、
ラムダ式(デリゲート)を使うので関数の呼び出しがインライン化されないとか、
SumやMaxなど集計系メソッドを複数使った場合にちょっと効率の悪いことをしているとか
そんなところだね。
281デフォルトの名無しさん
2008/11/01(土) 12:18:38 Reverseってバッファ使うから即時実行だと思ってたんだけど、Reverseの呼び出し時じゃなくて
最初のMoveNextの呼び出しの時点ですべての結果が決まるから遅延実行になるのか
速い遅い気にするならどういう実装になってるか気にしないといけないね
最初のMoveNextの呼び出しの時点ですべての結果が決まるから遅延実行になるのか
速い遅い気にするならどういう実装になってるか気にしないといけないね
282デフォルトの名無しさん
2008/11/01(土) 12:31:55 3.0出始めの時に誰かが、foreachで条件とか変換とか並べて書いたのと、クエリ式とか並べて頴田の比べて結構違いがあったような。
283デフォルトの名無しさん
2008/11/01(土) 12:37:47 Linq to ObjectとLinq to SQLは分けないと話が食い違うから要注意。
284デフォルトの名無しさん
2008/11/01(土) 12:44:36 この文脈でどう読んだらto SQLになるのか
285デフォルトの名無しさん
2008/11/01(土) 12:50:21 4.0の紹介ビデオみてるが、よいなぁこれ・・・
来年早々にも出してくれんかな・・・
来年早々にも出してくれんかな・・・
286デフォルトの名無しさん
2008/11/01(土) 13:11:04 PLINQとか並列化関係いいなぁ・・
287デフォルトの名無しさん
2008/11/05(水) 00:04:48 4.0の紹介ビデオってmsdnにある?
288デフォルトの名無しさん
2008/11/05(水) 00:12:26 http://channel9.msdn.com/pdc2008/TL16/
ちなみに、パスを1段削って、
http://channel9.msdn.com/pdc2008/
にするとPDCのセッションの一覧が出てくる。
ちなみに、パスを1段削って、
http://channel9.msdn.com/pdc2008/
にするとPDCのセッションの一覧が出てくる。
289デフォルトの名無しさん
2008/11/05(水) 00:31:16 thx
290デフォルトの名無しさん
2008/11/06(木) 01:31:48 C#インタプリタ、すげぇ!
291デフォルトの名無しさん
2008/11/06(木) 09:38:50 >>282
http://ufcpp.net/study/csharp/sp3_linqreconstruct.html#iterator
これ?
foreach で置き換えるだけじゃたいして性能変わらない。
ここで違いが出てるのはそれの次の節の話で、
「if をループの外に出せ」と同じ原理で
「可能な限り where を from の上に」ってやるとパフォーマンス結構変わる。
http://ufcpp.net/study/csharp/sp3_linqreconstruct.html#iterator
これ?
foreach で置き換えるだけじゃたいして性能変わらない。
ここで違いが出てるのはそれの次の節の話で、
「if をループの外に出せ」と同じ原理で
「可能な限り where を from の上に」ってやるとパフォーマンス結構変わる。
292デフォルトの名無しさん
2008/11/06(木) 10:16:15 LINQのクエリ式とSQLの一番の違いがプランナの有無。
クエリ式は書いた順番どおりに処理していくが、
SQLはプランナが最適な実行計画を立てる。
クエリ式は書いた順番どおりに処理していくが、
SQLはプランナが最適な実行計画を立てる。
293デフォルトの名無しさん
2008/11/06(木) 10:39:15 LinqtoObjectも気合い入れてプロバイダ書けばプランナ相当のもの記述可能?
いや書く気毛頭無いですが
いや書く気毛頭無いですが
294デフォルトの名無しさん
2008/11/08(土) 12:26:24 やろうとおもえばLINQでスクリプト言語書けるよ
295デフォルトの名無しさん
2008/11/09(日) 21:52:31 >> 294
出だしだけでもKWSK
出だしだけでもKWSK
296デフォルトの名無しさん
2008/11/11(火) 17:07:42 LINQ to SQLって無くなるの?
なんつーか、ぶちまければ良いってもんじゃねぇだろ。
そんなのはオプソ系に任せとけよ。
なんつーか、ぶちまければ良いってもんじゃねぇだろ。
そんなのはオプソ系に任せとけよ。
297デフォルトの名無しさん
2008/11/11(火) 18:08:39 何で無くなると思ったのさ?
298デフォルトの名無しさん
2008/11/11(火) 18:35:18 なくなるっつーかLinq to Entityに置き換えでしょ。
別に今のところは対して書き方が違うわけじゃないし
Linq to Entity完成までの代打的存在として十分用を果たしたような。
別に今のところは対して書き方が違うわけじゃないし
Linq to Entity完成までの代打的存在として十分用を果たしたような。
299デフォルトの名無しさん
2008/11/11(火) 22:44:48 うむ。かなりの部分でSQLの開発楽にしてくれた。
ストーリーにちゃんと沿わないと痛い目あうがなwww
ストーリーにちゃんと沿わないと痛い目あうがなwww
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【日本人の旅行離れ】国内旅行すら行けなくなった……オーバーツーリズムだけじゃない 旅行者減少の異常事態 [ぐれ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- 中国の渡航自粛要請1カ月 大阪の観光バス予約ゼロ、東北にも波及 [蚤の市★]
- 【神戸】エレベーター「かご」なく男性医師が転落死 大手「三菱電機ビルソリューションズ」の担当者、安全装置切り放置か [ぐれ★]
- 【福岡】「人が道路に寝込んでいた。顔面から出血し、うなり声をあげている」 福岡市中央区で男性はねられ死亡 タクシー運転手逮捕 [ぐれ★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 [蚤の市★]
- 高市、メガソーラー廃止。環境破壊が社会問題化 [792147417]
- クリスマスに何かする「予定なし」は54%。 過去最高水準に。ケーキの値上げもあって節約志向へ [663766621]
- 他人のリクエストで自分の癖と異なる絵を上げる絵師いるじゃん?
- なぜ日本人はフード被らないの?寒いのに
- ワイが考えてるキャラ当ててみろやwww
- 🏡おい!返事しろ︎︎!知的障害者!
