【VB.NET】LINQ友の会【C#, C♯, C#】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/02/09(土) 23:51:34統合言語クエリ (LINQ : Language Integrated Query)
ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。
関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。
DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する
言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。
質問、便利なマイテクニックの発表、いろいろやっちゃってください。
0153デフォルトの名無しさん
2008/04/13(日) 02:32:31var r =
from i in
(from a in TBL1
from b in TBL2
where a.KEY1 == b.KEY2
select new { A = a , B = b })
select new { KEY1 = i.A.KEY1 , COL1 = i.A.COL1 , COL2 = i.B.COL2 };
こんな感じだけど、この例だとサブクエリ必要なくね?
0154デフォルトの名無しさん
2008/04/13(日) 02:36:53それ、LINQ だとサブクエリ要らない。
var q =
from a in tbl1
join b in tbl2 on a.Key equals b.Key
select new { a.Key, a.Col1, b.Col2 };
サブクエリは普通に ↓ みたいに書ける。
from a in
from b in list
select b.SomeProperty
select a.SomeProperty
0155デフォルトの名無しさん
2008/04/13(日) 14:50:18保守が容易な綺麗なコードを書けるから
(゚�听)イラネ
0156デフォルトの名無しさん
2008/04/13(日) 16:44:19コードが見通しよく整理されていく中盤からの展開は見てて痛快だなぁ
0157デフォルトの名無しさん
2008/04/24(木) 21:22:230158デフォルトの名無しさん
2008/04/24(木) 21:41:48Visual LINQ Query Builder
VS2008用のアドインか
0159デフォルトの名無しさん
2008/05/24(土) 20:45:08SQLでおなかいっぱいで
0160デフォルトの名無しさん
2008/05/24(土) 21:01:08LINQ の価値は速度じゃなくて、
OOP パラダイムと RDB パラダイムの懸け橋になること。
SQL でおなかいっぱいって人にこそ LINQ がいいんじゃないか。
0161デフォルトの名無しさん
2008/05/24(土) 23:11:23お母さんが子供に教えるように教えてください
0162デフォルトの名無しさん
2008/05/24(土) 23:23:16C# の中で、オブジェクト指向言語の感覚からあまり外れることなく、
データベース問い合わせが書けるってことが大事。
0163デフォルトの名無しさん
2008/05/25(日) 00:22:260164デフォルトの名無しさん
2008/05/25(日) 04:39:07条件次第で内容が大きく変わるようなクエリを構成するときに、文字列の連結を間違えて
バグを作り込んでしまうような、つまらないミスを防げる。
DataContextの定義にあわせて自動でCREATE DATABASEしてくれるとか、生産性の向上に
つながる要素がいろいろあるよ。
俺もほとんど把握してないけどさ。
0165デフォルトの名無しさん
2008/05/25(日) 09:04:21C/C++やらで何らかのデータ処理を行う場合、その度毎にアルゴリズムを考え、設計し、
コードを作りこまなくちゃいけないけど。
RDBだと、ちょこっとSQLを定義するだけで実際の処理はRDBのエンジンがやってくれる。
例えるなら文字列の正規表現みたいな感じで。
それが言語組み込みの文法として、RDBだとDBサーバを立て、テーブルを作り、データをインポートして
からじゃないと使えないのが、RDBに限らずC#言語上の任意のコレクションデータで使えてしまう
ってのは便利。
0166デフォルトの名無しさん
2008/05/25(日) 09:41:44インピーダンスミスマッチでぐぐれ
0167デフォルトの名無しさん
2008/05/25(日) 11:12:57逆に今あるオブジェクトからテーブルとかを生成するツールってあったっけ?
0168デフォルトの名無しさん
2008/05/25(日) 14:02:32方法 : データベースを動的に作成する (LINQ to SQL)
http://msdn.microsoft.com/ja-jp/library/bb399420.aspx
0169デフォルトの名無しさん
2008/05/25(日) 14:39:10これでも読め
http://www.microsoft.com/japan/msdn/net/bb425822.aspx
0170デフォルトの名無しさん
2008/06/02(月) 22:49:47感謝しろビル
0171デフォルトの名無しさん
2008/06/04(水) 08:38:010172デフォルトの名無しさん
2008/06/09(月) 11:06:000173デフォルトの名無しさん
2008/06/15(日) 19:33:30Linqも人気ないけど
ダメ技術のかほりがすっぞ
0174デフォルトの名無しさん
2008/06/17(火) 02:07:550175デフォルトの名無しさん
2008/06/17(火) 07:25:18XMLとかにもいいと思うよ。
0176デフォルトの名無しさん
2008/06/17(火) 21:00:53クエリ形式は「さあLINQ使っちゃうぞー」って感じになっちゃって好きじゃない
0177デフォルトの名無しさん
2008/06/17(火) 22:19:070178デフォルトの名無しさん
2008/06/18(水) 03:55:30クエリ式を使ってる
けど、それ以外ではクエリ式は全然使ってない
0179デフォルトの名無しさん
2008/06/19(木) 22:35:19ポテンシャルは高い気がする。
0180デフォルトの名無しさん
2008/06/20(金) 00:55:26微妙なところだ。
PLINQとかになるとまた話は違うだろうけれど。
0181デフォルトの名無しさん
2008/06/20(金) 08:43:29from x in a select x; みたいなのを foreach(var x in a) yield return x; に変えるような
最適化だとせいぜい5%くらいしかスピード変わらない。
5%を気にしないといけない場面はそれほど多くないと思う。
ただ、a.Max(), a.Min(), a.Count() を同時に求めたいような場合、
自前で for まわして同時に求めた方が圧倒的に早い。
Parallel Extensions にはParallel.Forとかもついてるしなぁ。
PLINQでもやっぱり Max, Min, Count の問題は解消しない。
0182デフォルトの名無しさん
2008/06/20(金) 09:05:06DryadLINQみたいにExpressionを直接扱う計算エンジンが要るね。
PLINQは所詮IEnumerableベースだし。
ttp://research.microsoft.com/research/sv/DryadLINQ/
ポテンシャルはDryadLINQ>>>>>PLINQなんだろうけど、
出荷までにかかる時間を考えるとPLINQ>>>DryadLINQだろうねぇ。
C# 3.0もお披露目から1年半ぐらいかかったし。
出荷までの時間短縮はお金じゃ解決しづらいんだろうな。
0183デフォルトの名無しさん
2008/06/20(金) 09:07:06不等号逆だった……
ポテンシャル: DryadLINQ>>>>>PLINQ
出荷までにかかる時間: PLINQ<<<DryadLINQ
0184デフォルトの名無しさん
2008/06/20(金) 09:10:04あとこれもお披露目から2年半の間違い。
0185デフォルトの名無しさん
2008/06/21(土) 10:41:480186デフォルトの名無しさん
2008/06/26(木) 01:03:410187デフォルトの名無しさん
2008/07/07(月) 22:42:170188デフォルトの名無しさん
2008/07/07(月) 22:53:070189デフォルトの名無しさん
2008/07/07(月) 23:23:38一言レスって周りにも意図伝わらないからヤメレ
0190デフォルトの名無しさん
2008/07/07(月) 23:26:55リレーション張っても参照のプロパティでアクセス出来るのも簡単すぎて涙が出る。
長ったらしいデータセットのクラス名で変数宣言してたら、varで省略できるのにも涙が出た。
0191>>188 じゃないよ
2008/07/07(月) 23:30:39自分で書けばわかるって事だろ?
意図理解できないのは君だけだと思うが。
0192デフォルトの名無しさん
2008/07/08(火) 10:10:04XmlReaderと比べるあたり自分では何も調べずに
思いつきで書き込んだと証明してるようなものだ。
0193デフォルトの名無しさん
2008/07/08(火) 23:25:23二つコードを書けということですね、わかります
0194デフォルトの名無しさん
2008/07/08(火) 23:47:33ごめんなさい
>>192
違いの話なんかしてないっすよ?
あれからbuilderってサイトのサンプルを読んで勉強してみてる。
ちょっと興奮で震えてます。
皆ありがとう
0195デフォルトの名無しさん
2008/07/09(水) 03:40:44Linq for XMLで使うXElement系のクラスはDTDやXMLスキーマをサポートしない。
構造の検査、実体やデフォルトの属性を展開することが必要という意味で複雑なXMLだったら手も足も出ない。
XDocument/XElementはXMLパーサーとしての機能をしぼっている。
簡単なXMLの読み書き加工は簡単にかつスマートに書ける、Linq for XMLはその為のもの。
XmlDocment/ElementはDOMとしてのすべての機能をもつ。多機能ではあるが何をするにも大掛かり。
XmlReader/Writerは StAX型の前方参照型で高速。
使用メモリが少なくてすみ全部メモリに読み込むのが問題になるような大きなXMLも対応できる。
扱いは当然ややこしい。
0196デフォルトの名無しさん
2008/07/11(金) 13:29:590197デフォルトの名無しさん
2008/07/19(土) 20:38:17LINQテクノロジ入門
http://ec.nikkeibp.co.jp/item/books/A04100.html
・07/22発売 3,360円(税込み) B5変 280P
0198197
2008/07/27(日) 00:32:31図表を多く使っていて、C#/VBのサンプルコードも多いのは○
内容的には結構踏み込んで丁寧に解説されていて、実際に発行されるT-SQLまで触れられてたりする。
・C#/VB・SQLに関する基本的な理解は必須。
・開発経験のない初心者が読むには少し難しい。
・何となくLINQを使っているが、使いこなせていないと感じてる人 にはおすすめ。
0199デフォルトの名無しさん
2008/07/27(日) 01:55:180200デフォルトの名無しさん
2008/07/27(日) 11:06:25単に .Select メソッド(あるいは拡張メソッド)とか実装するだけ。
LINQ to SQL みたいなことしたければ、
LINQ の勉強というよりは、Expression Trees の勉強が必要。
で、LINQ がらみの記事は結構おおいけど、
Expression Trees はあんまり見ないなぁ。
0201デフォルトの名無しさん
2008/07/27(日) 12:23:14それです、それ。
具体的にどこまでのExpressionTreeをどんな風に実装したらいいのかが・・・
0202デフォルトの名無しさん
2008/07/27(日) 12:55:38http://ufcpp.net/study/csharp/sp3_linqreconstruct.html
LINQ to SQL みたいなことしたければ、IQueryable でググってみるといいんじゃないかと。
0203デフォルトの名無しさん
2008/07/27(日) 13:14:37ttp://msdn.microsoft.com/ja-jp/library/bb546158.aspx
ttp://msdn.microsoft.com/ja-jp/library/bb882640.aspx
0204デフォルトの名無しさん
2008/08/31(日) 11:34:15LINQの本が少ない中、この本はお薦め。
LINQを構成する基礎や、現在のバージョンで、できる事できない事、
やってはダメな事が書かれている。
.netとSQLを使って仕事している人ならLINQがどういう物か理解できる。
少なくともこの本レベルの事を理解していないと知らずに地雷を埋め込むことになる。
0205デフォルトの名無しさん
2008/08/31(日) 18:22:460206デフォルトの名無しさん
2008/08/31(日) 23:44:430207デフォルトの名無しさん
2008/09/01(月) 00:10:28消えていくと言う運命もあるから、俺はもう少し様子見。
0208デフォルトの名無しさん
2008/09/01(月) 00:59:300209デフォルトの名無しさん
2008/09/01(月) 06:48:16新規には誰も使わなくなって結局放置と言うこと。
まあ、特攻する人も必要だから、>>208 は頑張ってくれ。
0210デフォルトの名無しさん
2008/09/01(月) 09:00:39そのほかはともかく
0211デフォルトの名無しさん
2008/09/01(月) 21:35:34俺はなくてもあまり困ってないし、「残らない可能性もある」ので
ちょっと様子見してるだげ。
いいと思う人はどしどし使って広めてくれ。
0212デフォルトの名無しさん
2008/09/01(月) 23:25:27特にLINQtoSQL。XMLはしらんがたぶん便利だろう。
今のだと出来ないこともあるけれど、出来るところのはかなり楽だ。
0213デフォルトの名無しさん
2008/09/01(月) 23:38:08今後、LINQ to SQL とか LINQ to XML が廃れるようになろうとも、
コレクションとかサーバ問い合わせ系のライブラリ書く人は
おそらくほぼ LINQ の規約に従ってメソッド名を付けると思う。
そういう意味では、廃れないと思うんだが。
クエリ式とか、IQueryable を介したサーバ問い合わせとかが廃れようとも、
命名規約の部分に関しては絶対残る。
0214デフォルトの名無しさん
2008/09/01(月) 23:43:37MS がエンタープライズ相手の商売してるから、
個人で趣味で開発してる人へのアピール弱いせい。
あんまりホビープログラムでDBアプリとか書かないし。
0215デフォルトの名無しさん
2008/09/02(火) 00:10:13まだまだこれからの技術。
0216デフォルトの名無しさん
2008/09/03(水) 00:23:39みたいなLINQ書くとselect newの部分でvalue1とvalue2を生成するためにSQLサブクエリが生成されるんだけど、
これってgroup byだけで上手く書き直す方法ないんかなぁ。
というより、生成したクエリを最適化してくれる関数みたいなものはないんだろうか。
0217デフォルトの名無しさん
2008/09/03(水) 08:19:42今後 Entity Fx の側がよっぽど大ごけしないと
LINQ to SQL のグレードアップは見込めない気もする。
LINQ とは別に、SQL 文の最適化ライブラリみたいなの探す方が早いかも。
0218デフォルトの名無しさん
2008/09/03(水) 08:25:31今のLINQのEntityうんたらがもっとしっかりしたものになるということ?
0219デフォルトの名無しさん
2008/09/03(水) 08:44:14同じ LINQ クエリ式を書いたときに、
実際にどういう SQL 文が発行されるかという、
実装上の最適化の部分に関して、
LINQ to SQL の今後にはあんまり期待しない方がいいんじゃないかってこと。
まだ手をつけてる人が少なくて情報少ないけども、
将来を期待したいなら LINQ to Entity Framework の方使うこと考えるのがいいんじゃないかと。
0220デフォルトの名無しさん
2008/09/03(水) 08:46:060221デフォルトの名無しさん
2008/09/11(木) 20:45:390222デフォルトの名無しさん
2008/09/17(水) 20:13:37ソートするのははどうすればいいですか?
var v = from e in GetFoo() orderby e.Age, e.Name select e
OrderBy二回せずに一回でさくっと書きたいです。
0223デフォルトの名無しさん
2008/09/17(水) 22:32:24OrderBy(1つ目の条件).ThenBy(2つ目の条件)
OrderBy 1回というのは無理。
0224デフォルトの名無しさん
2008/09/18(木) 20:14:01ThenByって知らなかった。ありがと。
0225デフォルトの名無しさん
2008/09/19(金) 01:50:550226デフォルトの名無しさん
2008/09/19(金) 03:17:060227デフォルトの名無しさん
2008/09/19(金) 07:24:560228デフォルトの名無しさん
2008/09/28(日) 23:54:29Aggreegate戻り値はIntegerだし、クエリ機能あれば十分なのでは。
LINQ TO XMLとか開発の現場でまず使うのは小数だろうし、可用性が低いよ。
VBチームの自己満足だね。いつものことだけど。
0229デフォルトの名無しさん
2008/09/29(月) 12:49:16VBのAggregate構文のことかEnumerable.Aggregateのことを言ってるのかわからない。
Integerってどういう意味だろう、集計対象の型で集計されると思うけど。
VBのLinqは使いやすくしようと、文法やキーワードを増やしすぎて
収集がつかなくなってるという感じはする。C#と同じにしておけば良かったような。
0230デフォルトの名無しさん
2008/09/29(月) 14:30:310231デフォルトの名無しさん
2008/09/29(月) 14:54:49やっぱりC#のyield知らないとわかりにくいのかな
0232デフォルトの名無しさん
2008/09/29(月) 23:02:22即時実行でないのに違和感を感じるのも分かるな。
0233デフォルトの名無しさん
2008/09/30(火) 11:58:270234デフォルトの名無しさん
2008/09/30(火) 23:43:430235デフォルトの名無しさん
2008/09/30(火) 23:47:50Windows2x時代のAPIは関係ないと思う。
0236デフォルトの名無しさん
2008/10/01(水) 02:17:48Fiberはいつのまにか消えていたってオチかな
0237[Fn]+[名無しさん]
2008/10/02(木) 00:00:540238デフォルトの名無しさん
2008/10/02(木) 00:06:530239デフォルトの名無しさん
2008/10/02(木) 01:54:39standaloneのXMLや部分的なXMLを簡単に扱えることを目指したもの。
はじめからDTDやXMLSchemaはサポートしないことになっていた。
もっともnamespaceを中途半端なサポートはチトいただけないから改良は欲しい。
いっそなくすか、もっと充実させるかどちらかで。
0240デフォルトの名無しさん
2008/10/02(木) 08:21:03ぶっちゃけあれ下層に XmlReader が使えるからでは
ないのかと
0241デフォルトの名無しさん
2008/10/02(木) 13:10:43FOR EACH書かなくてすむし、べた書きのXMLもコードとして扱える。
0242デフォルトの名無しさん
2008/10/03(金) 00:46:470243デフォルトの名無しさん
2008/10/03(金) 10:10:47まあx86にすりゃいいんだけど、デフォがAnyCPUだからなあ。
0244デフォルトの名無しさん
2008/10/11(土) 23:59:110245デフォルトの名無しさん
2008/10/12(日) 00:58:14LINQ to Entity の出た今となってはね。
MS SQL Server でしか使えないって言われてたのは、
SP1 入る前、LINQ to SQL の時代の話。
0246デフォルトの名無しさん
2008/10/12(日) 02:57:11でも Linq -> Entity SQL がサポートされたから、Entity SQL ->
ネイティブ SQL だけでいいじゃん=皆やる気ナスなだけで。
0247デフォルトの名無しさん
2008/10/12(日) 20:47:400248デフォルトの名無しさん
2008/10/13(月) 00:46:17そうじゃないならログ見りゃいいと思うけど・・・
0249デフォルトの名無しさん
2008/10/13(月) 17:15:00実行時でかまいません。
Linq to SQLのようのDataContext.Logプロパティにあたるものが見当たらないようです。
またSystem.DiagnosticsのTraceやDebugでも確認できませんでした。
探し方が悪いのかもしれませんがSQLのログを出力する方法を教えてください。
0250デフォルトの名無しさん
2008/10/13(月) 21:39:14と記憶を頼りにぐぐって気づいたんだが Express にはないのか
このツール。おおう。それとごめんトレースだった
2005 ならこんなの見つけたけど
ttp://code.google.com/p/sqlexpressprofiler/
0251デフォルトの名無しさん
2008/10/17(金) 03:19:46ttp://d.hatena.ne.jp/higayasuo/20081014/1223969275
拡張メソッドとラムダ式と式木と匿名型とvarとあって良かったと思える瞬間。
0252デフォルトの名無しさん
2008/10/17(金) 17:46:42■ このスレッドは過去ログ倉庫に格納されています