1 名前:デフォルトの名無しさん [2008/02/09(土) 23:51:34 ] VisualStudio2008より追加された便利で強力な機能 統合言語クエリ (LINQ : Language Integrated Query) ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。 関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。 DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する 言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。 質問、便利なマイテクニックの発表、いろいろやっちゃってください。
708 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 22:06:01.26 ] アイドルが同じ名前を使ってるけど、 これって、商標権的にどうなの? ja.wikipedia.org/wiki/LinQ
709 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 02:33:39.10 ] LISPとかもいましたし
710 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 02:42:37.61 ] >>708 これは酷い
711 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 08:30:57.04 ] >グループ名のLinQは"Love in 九州"からの造語であり、またアイドル活動を通じて様々なものを"リンク"するという意味も込められている。 それならLinKにしろよ。。。
712 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 08:58:56.23 ] 九州の意味でQを使うのは、ローカルSFコンベンションの「Qコン」とか、 わりと古くから歴史がある(あの米澤さんも参加したことがある大会、のはず)。
713 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 13:12:39.82 ] LINQが考えなしのアイドル?だかに汚された
714 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 14:34:17.58 ] >>708 専門家ではないが、分野が異なれば(明らかに別物と分かるので)問題ないはず この場合だと、 LINQの技術書買おうとして間違って写真集買ってしまう とかありえんだろ
715 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 14:45:19.45 ] 最初は良スレだったのにネタが尽きたか
716 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 08:35:59.17 ] 昔秋葉原の楽器屋にORACLE Masterの参考書が売ってて なんでかなと思ったらSOLってソフトの本と間違えてたみたい。 NoSQL系でLINQネイティヴ対応のが出れば流行るかねー MS以外にポートしないとダメか
717 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 00:20:54.78 ] 【消しゴム】MONOを使ってみるスレ4【じゃない】 toro.2ch.net/test/read.cgi/tech/1329023778/
718 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 19:50:47.06 ] アイドルはLinQでMSのはLINQだ
719 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 00:59:43.14 ] theinterviews.jp/linq/3146658 LINQネタにも返してくれてるしそんなに怒るなよw
720 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 01:34:42.96 ] アイドルも大変だなw
721 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 04:23:02.45 ] 律儀に返してるのかw
722 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:01:16.95 ] ステマスレとして終息か
723 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 07:12:16.27 ] 特定PCのみ、LINQ to EntitiesのLINQのクエリ構文だと 単純なクエリでもtimeoutするくらい遅いのですが、 なにか分かりますか?ExecuteStoreQueryなら同等でも一瞬なんです。 ・遅い Using context As New Entities Dim hoge = (From a In context.hoge Where a.hoge = "xx").ToList() End Using ・速い Using context As New Entities Dim hoge = context.ExecuteStoreQuery(Of hoge) _ ("select * from hoge where hoge = 'xx') End Using 前者だと高い確率で以下が出ます。後者は全く出ません。Entitiesは同じものです。 {"Timeout に達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。 現在のコマンドで重大なエラーが発生しました。結果は破棄しなければなりません。 サーバーから結果を受信しているときに、トランスポート レベルのエラーが発生しました。 (provider: Session Provider, error: 18 - ピアによって接続が閉じられました)"}
724 名前:デフォルトの名無しさん mailto:sage [2012/06/27(水) 11:03:37.78 ] サーバー一緒か? いずれにしてもクエリーフックしてどう違うかみて、そのクエリーを単体でやったらどうなるかとかより切り分けれ
725 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 10:55:47.07 ] >>724 サーバーも一緒です。接続文字列は変えていません。 ToTraceStringでクエリを抜きだしてみましたが、後者のクエリに全てのフィールドを 指定しているくらいで、他は同等でした。 ただ、SSMSで実行してみると、同様の現象は再現できました。・・のでEFは関係なさそうです・・ 実行する度にレスポンスが返るのが遅くなります。 1回目:0秒、2回目:2秒、3回目:8秒、4回目:24秒、5回目:60秒・・というように。。 * だと実行を何度連打しても0秒で返ります。 DBの専用スレで聞いてきた方が良いですよね。。ありがとうございました。
726 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 13:03:56.26 ] 件数がアホみたいに多いとかじゃないの ToListしてるってことは即時全結果返すってことだから
727 名前:デフォルトの名無しさん mailto:sage [2012/06/28(木) 13:13:47.69 ] >>725 100件程度です。問題になる件数ではないと思います。First()でも同様でした。 あとsqlserverの専用スレで聞いてきましたのでマルチポストになってしまいますし、 こちらは閉め切ります。ありがとうございました。
728 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 09:49:47.53 ] なってしまうじゃねえよ死ねカス
729 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 10:11:31.00 ] 聞いてくるって事前に書いたろうが。失せろクズ
730 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 19:48:13.25 ] 結局はVMのせいか。なんでCPUって思ったんだろうね。
731 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 14:48:44.96 ] VBだとFunction(x)とかの記述キチガイじみてるけど デバッグ中に他の箇所修正できるとこは 使い捨てプログラム作るときはうらやましいな
732 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 14:54:02.15 ] 俺はC#の方がキチガイに見えるw x=>とか象形文字かよソレ。 なんか調べてるとき、vb読みに脳内変換するのがツライです・・
733 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 16:13:40.13 ] そのうちIDE上でVB/C#のリアルタイム切り替えができる時代が来る
734 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 19:23:41.81 ] >>732 VBにもラムダ式あるだろ
735 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 20:07:38.46 ] そうだが、なにを言ってるんだおm
736 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 20:34:12.10 ] ミッドチルダ式とベルカ式どっちが好き?
737 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 21:51:23.02 ] オギノ式
738 名前:デフォルトの名無しさん mailto:sage [2012/07/30(月) 22:30:23.44 ] LINQは必ず全部探索するのが嫌 木構造のグラフがあるとき条件を満たしたら早期打ち切り、 みたいな処理が書けない
739 名前:デフォルトの名無しさん mailto:sage [2012/07/30(月) 22:57:56.60 ] Any() みたいなのは見つかった時点でやめてるんじゃね?
740 名前:デフォルトの名無しさん mailto:sage [2012/07/30(月) 23:57:33.89 ] うん
741 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 18:01:26.34 ] AsParallelってCPUリソース食う以外のデメリットってある?あんまり見ないなと・・
742 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 18:16:29.27 ] 並列化させると結果の順番が保証できない。 オプションで保証できるけどそれだと並列化の効果が落ちる。
743 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 19:02:00.50 ] ほうほう。なるほど。d
744 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 22:38:59.20 ] 結局要件次第なわけだけども… そこまで強烈に並列性を求められて、かつ、並列化に向いてる処理ってのが、業務とかだとほとんどないはず。
745 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 05:22:08.32 ] 異なるURLに対して一斉にHTTPでデータ取ってくる処理とかかな
746 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 00:47:56.74 ] >>745 そういうのはParallelでやっちゃダメ。 Task.WaitAll もしくは、4.5で入る Task.WhenAll でやらないと効率悪い。
747 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 01:03:58.30 ] 横から補足すると ParallelはCPU負荷が低いと並列度を上げるために新しいスレッドを立ち上げる。 そのためネットワークIO待ちで使うと数十のスレッドが次々と作られて非効率的。 スレッドの立ち上げは重い処理だし、メモリ使うし、切り替えにもオーバーヘッドかかるしでいい事ないよ。
748 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 10:13:12.64 ] すべてのクエリ文はobj.Where(〜).Select(〜〜)みたいなメソッドチェーンに置き換え可能なんですか?
749 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 16:38:48.52 ] >>748 そりゃ、仕様書にそう明記されてるからなぁ。 クエリ式はメソッドチェーンへの置き換えで実装しますって。
750 名前:デフォルトの名無しさん mailto:sage [2012/08/09(木) 16:02:22.16 ] Zelda対応はいつになりますか?
751 名前:デフォルトの名無しさん mailto:sage [2012/08/09(木) 21:01:37.80 ] 一瞬なにかと…。リンクね。Legend of Zelda なら店頭へ
752 名前:デフォルトの名無しさん [2012/09/14(金) 12:08:02.54 ] オフィシャルなドキュメントってmsdn.microsoft.com/ja-jp/library/vstudio/bb387098.aspx なんですか?何か右欄のスペースが凄い見にくい・・・。
753 名前:デフォルトの名無しさん mailto:sage [2012/09/14(金) 14:09:00.18 ] <root> <question> <qtext>にしむらひろゆき?</qtext> <correctid>3</correctid> <choices> <choice> <choiceid>1</choiceid> <ctext>MS</ctext> </choice> <choice> <choiceid>2</choiceid> <ctext>Apple</ctext> </choice> <choice> <choiceid>3</choiceid> <ctext>2ch</ctext> </choice> </choices> </question> </root> 上のようなXMLがあったとして 「にしむらひろゆき?:2ch」という結果を得たい場合、どのようにすれば良いでしょうか? XDocument xdoc = XDocument.Load(@"c:\sample.xml"); XNamespace ns = "2ch.net "; var q = from n in xdoc.Descendants(ns + "question") where (string)n.Element(ns + "correctid") == (string)n.Element(ns + "choiceid") select (string)n.Element(ns + "qtext") + ":" + (string)n.Element(ns + "ctext"); こんな感じでは上手くいきませんでした。
754 名前:デフォルトの名無しさん mailto:sage [2012/09/14(金) 22:44:52.58 ] var x = from q in xml.Descendants("question") let id = (string)q.Element("correctid") let qt = (string)q.Element("qtext") from choice in q.Element("choices").Elements("choice") where (string)choice.Element("choiceid") == id select qt + ":" + (string)choice.Element("ctext"); XNamespaceは略
755 名前:デフォルトの名無しさん mailto:sage [2012/09/14(金) 22:57:50.31 ] >>754 ありがとうございます! 「let」句を使うのですね。使い方もちゃんと調べておきます。
756 名前:デフォルトの名無しさん mailto:sage [2012/09/14(金) 23:02:47.39 ] いやlet句はこの場合楽できるぐらいの意味しかない from句を重ねて使用するのが肝
757 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 10:41:08.80 ] LINQ便利だけど、ローカル変数検索なんかで使う場合だと、遅いんだよね。 そろそろCLがコンパイル済みの最終実行状態を出力してくれればいいのに。。
758 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 10:43:41.46 ] >>723 思いっきりTimeoutって書いてあるじゃねえかwww
759 名前:デフォルトの名無しさん mailto:sage [2012/09/15(土) 21:35:58.16 ] さっき勉強したんだがLinq気持ちよすぎ精子吹いたwwwだれかC++に移植してくれ
760 名前:デフォルトの名無しさん mailto:sage [2012/09/17(月) 14:19:32.69 ] c++でも使えるだろ
761 名前:デフォルトの名無しさん mailto:sage [2012/10/09(火) 17:16:21.87 ] >>759 Ovenとかどうよ p-stade.sourceforge.net/oven/doc/html/index.html
762 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 04:17:21.52 ] where区で条件を動的にする方法はありませんか?
763 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 09:53:53.12 ] >>762 (1)パラメータクエリで解決するケース (2)さらに、and や or の条件が増えたり減ったりするなら、文字列をつぎはぎ (3)実はSQL文で結合とかいろいろ熟練すれば解決するケース のどれなんだろうな
764 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 10:17:54.51 ] 変数と変数の比較なら動的じゃないか。
765 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 18:39:25.06 ] 三項演算子使えばいけそうだな
766 名前:デフォルトの名無しさん mailto:sage [2012/10/20(土) 21:37:04.90 ] 誰もが通るスパゲッティ率最高のSQL組立
767 名前:デフォルトの名無しさん [2013/02/01(金) 13:55:35.49 ] class Data { public List<Item> Items = new Items(); } List<Data> dat = new List<Data>(); // ↑のdatリストから各Itemsプロパティの中身を全て抜出し、 // 1次元配列として得るにはどうしたらいいでしょうか?
768 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 16:52:24.22 ] >>767 foreachで列挙しつつ、AddRange クエリ文だけで済ませるのは難しいかもね。
769 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 17:14:16.34 ] >>767 Item[]にしたいということなら dat.SelectMany(x => x.Items).ToArray();
770 名前:デフォルトの名無しさん [2013/03/30(土) 19:52:58.27 ] IEnumerableとかIQueryableとかって会話で使うとき なんて発音してる? 遅延実行のナイスな活用例って 無限リストとか馬鹿でかいデーターソースしかないのかな 処理時間を確定させたくていつもToListしちゃう
771 名前:デフォルトの名無しさん mailto:sage [2013/03/30(土) 21:04:48.54 ] アイエヌュムェラボー アイクェリャボー
772 名前:デフォルトの名無しさん mailto:sage [2013/04/01(月) 15:49:06.61 ] 愛イニュメラブル 愛クエリアブル
773 名前:デフォルトの名無しさん [2013/04/03(水) 23:53:18.12 ] アイナマーエーブル イクォータブル
774 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 11:04:11.27 ] INumerable? Equatable?
775 名前:デフォルトの名無しさん mailto:sage [2013/04/05(金) 01:05:00.06 ] from x in xvideos where x.tag.Contains("anal") select x; /* 夜プログラミング部 */ engawa.2ch.net/test/read.cgi/poverty/1365090013/
776 名前:デフォルトの名無しさん [2013/04/18(木) 11:29:49.06 ] エロい人おしえてくり。 string[] testdata = {"BT","SS","TB","MCQ","AABC","NT"}; string[] result = testdata.Where(p => p.Length == 2 ).ToArray(); だと {"BT","SS","TB","NT"} が帰ってくるのですが、中の順番が乱れることはないって保障されているのでしょうか? 保障されていないのなら元の順番をでSortすることは可能でしょうか?
777 名前:デフォルトの名無しさん mailto:sage [2013/04/18(木) 11:45:38.06 ] 配列のイテレータは順番が保障されている。 Whereはフィルタだけで順番の変更はしない。 並べ替えたいならOrderBy >...ata.Where(p => p.Length == 2).OrderBy(s => s).ToAr...
778 名前:デフォルトの名無しさん mailto:sage [2013/04/22(月) 07:29:14.20 ] 課題が解けずに困ってます。教えていただけませんか? VBはスレ違いでしたらすいません。 スペースが文字化けしてしまうので-で代用しています。 Dim-;Inpdata,OutData-As-String Dim-;RecordCnt-As-;Integer Using-sr-As-;New-StreamReader(Text1,Shift_JIS),_ -sw-As-New-StreamWriter(Text2,Shift_JIS) -Do-While ;Sr.Peek>=0 ---RecordCnt=RecordCnt ;+ ;1 ---OutData=;InpData ---sw.WriteLine(OutData) Loop 上記コードについて以下のように処理するようコードを変更もしくは追加しなさい。 (変更or追加するところだけ教えてください) 1.変数InpDataの2桁目から4桁目の値に従い、文字属性の変数Age5に次の値を代入。 (000-004のとき01、005-009のとき02、010-014のとき03、015-019のとき04) また出力ファイルの各レコードの末尾にAge5の値を付与して出力する。 2.変数InpDataの2桁目から4桁目の値が変数Ageと等しいレコードのレコード数(変数Cnt)をカウントする。 すべてのレコードについて処理が終了したら「該当レコード数/総レコード数」を画面に表示する。
779 名前:デフォルトの名無しさん mailto:sage [2013/04/22(月) 08:27:19.55 ] Dim Inpdata, OutData As String Dim RecordCnt As Integer Using sr As New StreamReader(Text1, Shift_JIS), sw As New StreamWriter(Text2, Shift_JIS) Do While sr.Peek >= 0 RecordCnt = RecordCnt + 1 OutData = InpData sw.WriteLine(OutData) Loop
780 名前:デフォルトの名無しさん mailto:sage [2013/04/22(月) 08:47:25.25 ] LINQ関係ないな あとinpdataが空っぽのままだ
781 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 23:35:28.70 ] 外部結合これでいいの? ideone.com/W9XtxR 書き方が直接的じゃなくて気持ち悪いんだけど
782 名前:デフォルトの名無しさん mailto:sage [2013/08/29(木) 17:17:19.92 ] linqは結局流行らなかったね
783 名前:デフォルトの名無しさん mailto:sage [2013/08/29(木) 18:16:40.42 ] >>782
784 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 20:35:45.77 ] where節とかで何個溜まったらそこまでって出来ないのかな?
785 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 21:03:51.88 ] ちょっと意味が分からんが Takeのことか?
786 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 21:05:58.53 ] TakeWhile使え
787 名前:デフォルトの名無しさん mailto:sage [2013/09/05(木) 22:02:37.88 ] ありがとうござます そんな関数もあるのですね enumerableのメンバ関数を勉強してみます