VisualStudio2008より追加された便利で強力な機能
統合言語クエリ (LINQ : Language Integrated Query)
ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。
関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。
DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する
言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。
質問、便利なマイテクニックの発表、いろいろやっちゃってください。
探検
【VB.NET】LINQ友の会【C#, C♯, C#】
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2008/02/09(土) 23:51:34952デフォルトの名無しさん
2016/11/13(日) 13:24:00.80ID:fBLfWj6L あるよ
そこは生産性とのトレードオフ
そこは生産性とのトレードオフ
953デフォルトの名無しさん
2016/11/13(日) 15:26:48.72ID:PMfnb6vA >>949
プランナの有無とか、あくまでも今のLINQの実装なら、て前提があると思うが
基本的にはLINQは遅延実行なので、プランナ入れて最適化する余地はあると思うぞ
DBアクセスに限るなら、LINQがやるのは最終的なSQLを作るだけとも言えるので
後はそのDBのオプティマイザ次第、ってのが理想じゃないかとは思うが
まあSQLの書き方でパフォーマンス差が出るのは事実だし
LINQで最適化されてないSQLが出力されるのもある程度しょうがない
プランナの有無とか、あくまでも今のLINQの実装なら、て前提があると思うが
基本的にはLINQは遅延実行なので、プランナ入れて最適化する余地はあると思うぞ
DBアクセスに限るなら、LINQがやるのは最終的なSQLを作るだけとも言えるので
後はそのDBのオプティマイザ次第、ってのが理想じゃないかとは思うが
まあSQLの書き方でパフォーマンス差が出るのは事実だし
LINQで最適化されてないSQLが出力されるのもある程度しょうがない
954デフォルトの名無しさん
2016/11/14(月) 07:06:28.58ID:OCTkBwGI LINQはコレクションを順番に処理するだけのことだからXMLのような文書を検索なんて
実質できないでしょ。誇大広告じゃないかな。
コレクションにすればLINQがつかえるけど、IEnumerableにできなければ使えない。
そこがむつかしいのでは?
実質できないでしょ。誇大広告じゃないかな。
コレクションにすればLINQがつかえるけど、IEnumerableにできなければ使えない。
そこがむつかしいのでは?
955デフォルトの名無しさん
2016/11/14(月) 12:45:24.50ID:OCTkBwGI つーかやってみると奥が深いな。あんまり深入りしないほうがいいな。
select,whereを適当につかうくらいにしておいたほうがいいとおもった
select,whereを適当につかうくらいにしておいたほうがいいとおもった
956デフォルトの名無しさん
2016/11/14(月) 14:29:26.19ID:OCTkBwGI var query = from f in FileList
let matches = rx.Matches(f.DirectoryName )
where (matches.Count > 0)
orderby f.CreationTime descending
group f by f.DirectoryName;
これをdesendigとaescendigを切り替えようとおもうと、まるまる2回書かないと
いけないな。
なんかいい方法ないのか?
モードでクエリを切り替えるのって大変だな。
let matches = rx.Matches(f.DirectoryName )
where (matches.Count > 0)
orderby f.CreationTime descending
group f by f.DirectoryName;
これをdesendigとaescendigを切り替えようとおもうと、まるまる2回書かないと
いけないな。
なんかいい方法ないのか?
モードでクエリを切り替えるのって大変だな。
957デフォルトの名無しさん
2016/11/14(月) 20:35:23.23ID:ODUYDX4V >>954
Linqで全てのクエリを賄うのは厳しいよ
パフォーマンスもそうだけど検索対象に特化したDSLの方がやっぱり機能面でも強力だ
ただしそういう場合でも結果をIEnumerableに帰着させるだけでLinqの恩恵を得られるってのは大きいね
そうすれば省メモリかつ高速かつ柔軟に検索した上で後は同じインターフェースを通じて結果をお手軽に処理といった事ができる
Linqで全てのクエリを賄うのは厳しいよ
パフォーマンスもそうだけど検索対象に特化したDSLの方がやっぱり機能面でも強力だ
ただしそういう場合でも結果をIEnumerableに帰着させるだけでLinqの恩恵を得られるってのは大きいね
そうすれば省メモリかつ高速かつ柔軟に検索した上で後は同じインターフェースを通じて結果をお手軽に処理といった事ができる
958デフォルトの名無しさん
2016/11/16(水) 03:40:03.88ID:wnKhXXqD せっかくLINQ覚えてもJAVAではつかえないのか? 残念。
959デフォルトの名無しさん
2016/11/16(水) 06:12:37.05ID:sZ2S0G8X Java8の関数型、Stream がLINQと同じ
960デフォルトの名無しさん
2016/11/16(水) 12:14:52.63ID:wnKhXXqD Javaにもあったのか? 本が古すぎた。
ところでクエリー式とメソッド式はどっちが有利なのだ? どっちかにして
ほしいよ。それでなくても覚えることが多いのだから、、
ところでクエリー式とメソッド式はどっちが有利なのだ? どっちかにして
ほしいよ。それでなくても覚えることが多いのだから、、
961デフォルトの名無しさん
2016/11/16(水) 20:05:50.19ID:gtmrvLDz 散々既出だけどメソッド形式だけでいいよ
クエリ形式はレガシーコードの保守で修正しなきゃならない場合にだけ考えればいい
クエリ形式はレガシーコードの保守で修正しなきゃならない場合にだけ考えればいい
962デフォルトの名無しさん
2016/11/17(木) 03:40:19.26ID:B+vLCAoF 既出でしたか? 最近LINQを知ったばかりなので、知りませんでした。
963デフォルトの名無しさん
2016/11/17(木) 21:48:26.39ID:1A2/m07v ギャグは顔だけにしてくれ。
964デフォルトの名無しさん
2016/12/09(金) 06:57:30.84ID:9zXSWeUB var q = from cn in (from n in a select conversion(n))
from m in b select cn + m;
var q = a.Select((n) => new { n, cn = conversion(n) })
.SelectMany((c)=>b, (d,m)=>d.cn + m);
等価らしいが意味が分からない。dはどこからでてきたのだろうか?
from m in b select cn + m;
var q = a.Select((n) => new { n, cn = conversion(n) })
.SelectMany((c)=>b, (d,m)=>d.cn + m);
等価らしいが意味が分からない。dはどこからでてきたのだろうか?
965デフォルトの名無しさん
2016/12/09(金) 14:49:56.91ID:NMzYP4JF >>964
http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_08/csharp30_08_04.html
くこか
letの代わりにInt32を取るSelectManyだろ
呼び出されるたびに+1されていく
cとdがそれぞれnとcnに対応する
mがInt32
http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_08/csharp30_08_04.html
くこか
letの代わりにInt32を取るSelectManyだろ
呼び出されるたびに+1されていく
cとdがそれぞれnとcnに対応する
mがInt32
966デフォルトの名無しさん
2016/12/11(日) 11:53:49.51ID:vFkR62Wj いやいや違うだろ
http://devlights.hatenablog.com/entry/20100715/p1
この例のようにSelectManyの、ここでは2番目のオーバーロードを使っている
つまり
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
Console.WriteLine(conversion(a[i]) + b[j]);
Console.WriteLine($"conversion called: {count}");
と同じことをSelectManyを使って一本化してるだけ
1番目のオーバーロードが同じclassのメンバなのでcollectionselectorを使ってないが
ここではa[]とb[]という別々の配列に対して計算結果の二重ループを平坦化したいので
collectionselectorが必要になりこのような書き方になっている
http://devlights.hatenablog.com/entry/20100715/p1
この例のようにSelectManyの、ここでは2番目のオーバーロードを使っている
つまり
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
Console.WriteLine(conversion(a[i]) + b[j]);
Console.WriteLine($"conversion called: {count}");
と同じことをSelectManyを使って一本化してるだけ
1番目のオーバーロードが同じclassのメンバなのでcollectionselectorを使ってないが
ここではa[]とb[]という別々の配列に対して計算結果の二重ループを平坦化したいので
collectionselectorが必要になりこのような書き方になっている
967デフォルトの名無しさん
2017/05/25(木) 00:30:45.34ID:hLFywp3s 今更ながらlinqは美しいな。
968デフォルトの名無しさん
2017/05/26(金) 10:25:31.49ID:W7QTy6fz 糞遅い。市ね。
969デフォルトの名無しさん
2017/06/08(木) 10:57:09.59ID:0C/h20Gd970デフォルトの名無しさん
2017/06/10(土) 00:30:52.81ID:iwxerOOa 速くなるわけがない。
971デフォルトの名無しさん
2017/06/14(水) 01:47:53.79ID:osSxyyDu ちゃんとベタに書いたコードに比べたら無駄なコードが入るので速くはならいよ。
比べたらそりゃ遅いに決まってる。
比べたらそりゃ遅いに決まってる。
972デフォルトの名無しさん
2017/06/15(木) 07:42:14.92ID:pzpB7PXh 副作用を検知して、自動で並列化するようになれば、
linqで書いといた方が速いってことにもなりそうだけど
linqで書いといた方が速いってことにもなりそうだけど
973デフォルトの名無しさん
2017/06/17(土) 05:54:49.47ID:Q2thxGyP 他でドヤ顔してLINQ書いてる馬鹿がいて、
for + if でそのまま仕様どおり書いたら何倍も速かったってオチがあったな。
for + if でそのまま仕様どおり書いたら何倍も速かったってオチがあったな。
974デフォルトの名無しさん
2017/06/17(土) 16:13:15.19ID:O4zo0eqa 可読性より速度が大事ならいいんじゃない
975デフォルトの名無しさん
2017/06/22(木) 06:38:35.83ID:v39t46ad 違いが分かるほど差が出るってどんな用途だよ??
そんなに速度欲しいならC++で書いたほうがいいんじゃないの
そんなに速度欲しいならC++で書いたほうがいいんじゃないの
976デフォルトの名無しさん
2017/06/30(金) 09:16:50.65ID:VRcvSEbT C#は糞遅いからな。
C#でもJavaでもPythonでもライブラリはみんなC++で書かれてるのは他が糞遅いから。
C#でもJavaでもPythonでもライブラリはみんなC++で書かれてるのは他が糞遅いから。
977デフォルトの名無しさん
2017/06/30(金) 10:32:08.74ID:YD6uFwbU C#より速い言語をあげてください
978デフォルトの名無しさん
2017/07/02(日) 05:05:09.61ID:oEcBkrJ7 LINQが遅いのは分るがC#自体はそれほど遅くはない。
979デフォルトの名無しさん
2017/07/04(火) 13:43:58.23ID:VgVQ93XC C#ってネイティブコード吐けるの?
980デフォルトの名無しさん
2017/07/05(水) 07:02:18.26ID:0I1uRl92 C#自体の遅い速いじゃなくて
LinQと普通のベタコードの違いが分かるくらい速度を求める処理するなら
最初から素直にC++使えって事だろ
LinQと普通のベタコードの違いが分かるくらい速度を求める処理するなら
最初から素直にC++使えって事だろ
981デフォルトの名無しさん
2017/07/05(水) 12:56:08.45ID:SCEaR+bW LINQ使うから遅くなるだけで普通に書けばまぁまぁ速度は出る。ガチのC++には勝てないがね。
982デフォルトの名無しさん
2017/08/09(水) 07:30:25.84ID:0sQ4qce6 C#より(開発環境インストールするのにかかる時間が)速い言語をあげてください
983デフォルトの名無しさん
2017/08/22(火) 17:35:45.83ID:NIBb7Mxl 当然のことながら、結局、普及しなかったな。
984デフォルトの名無しさん
2017/10/23(月) 21:57:55.15ID:budLyErM >>975
LINQの句理解せずに適当に使って無駄なループしてたってオチじゃね
LINQの句理解せずに適当に使って無駄なループしてたってオチじゃね
985デフォルトの名無しさん
2017/10/24(火) 20:03:02.29ID:dTnbV75y LINQは川俣本でいいから読んどくべきだな
実行時間を削る事にかけてはストイックなほどの本
実行時間を削る事にかけてはストイックなほどの本
986デフォルトの名無しさん
2017/10/25(水) 10:51:42.48ID:hJQiC82m このスレといい関数言語スレの過疎っぷりといい、
C#スレで暴れてたキチガイって結局一人だけだったんだな。
C#スレで暴れてたキチガイって結局一人だけだったんだな。
987デフォルトの名無しさん
2017/11/05(日) 18:36:31.69ID:GvmpunB7 987
988デフォルトの名無しさん
2017/11/05(日) 18:37:02.13ID:GvmpunB7 988
989デフォルトの名無しさん
2017/11/05(日) 18:37:27.51ID:GvmpunB7 989
990デフォルトの名無しさん
2017/11/05(日) 18:37:57.71ID:GvmpunB7 990
991デフォルトの名無しさん
2017/11/05(日) 18:38:21.67ID:GvmpunB7 991
992デフォルトの名無しさん
2017/11/05(日) 18:38:46.11ID:GvmpunB7 992
993デフォルトの名無しさん
2017/11/05(日) 18:39:11.03ID:GvmpunB7 993
994デフォルトの名無しさん
2017/11/05(日) 18:39:35.87ID:GvmpunB7 994
995デフォルトの名無しさん
2017/11/05(日) 18:40:01.28ID:GvmpunB7 995
996デフォルトの名無しさん
2017/11/05(日) 18:40:25.86ID:GvmpunB7 996
997デフォルトの名無しさん
2017/11/05(日) 18:40:51.30ID:GvmpunB7 997
998デフォルトの名無しさん
2017/11/05(日) 18:41:15.86ID:GvmpunB7 998
999デフォルトの名無しさん
2017/11/05(日) 18:41:40.95ID:GvmpunB7 999
1000デフォルトの名無しさん
2017/11/05(日) 18:42:08.10ID:GvmpunB7 1000
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3556日 18時間 50分 34秒
新しいスレッドを立ててください。
life time: 3556日 18時間 50分 34秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国・ロシア両軍の爆撃機が東京方面へ向かう「異例のルート」を共同飛行…核も搭載可能、連携して威嚇か ★7 [ぐれ★]
- 山田邦子 ひょうきん族時代の年収は12億円「ただ税金が80%」 [muffin★]
- 東京の自販機そばに金塊4200万円分、何者かに持ち去られる…札幌の50代が8000万円振り込んだ後に上京して被害 [どどん★]
- 向こう3カ月のコメ価格、下落予想強まる…新の収穫量増え需給緩むか 米穀安定供給…調査 [蚤の市★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 円安、賃金安、人手不足、物不足、人口減少、少子高齢化、物価高、地方過疎化、インフラ崩壊、増税、高市有事👈どうする [943688309]
- テメェは俺を怒らせたオラァ👊💢😅💢👊🏡
- 来年こそ趣味をもとうとおもう!オススメ挙げてけ。全部試す!
- 【悲報】東京都「実質豊かさ全国最下位」👈え?じゃあ出身者以外で東京に住む意味って何? [732289945]
- ルーナイト第1条!誰よりルーナ(・o・🍬)が好きな人~🙋🏡
- ケツから波動拳でた
