1 名前:デフォルトの名無しさん [2008/02/09(土) 23:51:34 ] VisualStudio2008より追加された便利で強力な機能 統合言語クエリ (LINQ : Language Integrated Query) ちょっと使ってみると、意外と難しいし、テクニック的にも奥が深いものです。 関数型言語にしかないような機能ラムダ式(Lambda式)などはオブジェクト指向とは一味違う機能です。 DataBaseの操作にも、Xmlの操作にも、さらにもっと単純な配列なコンテナにさえ機能する 言語共通・高汎用な統合言語クエリを皆で一緒にマターリ勉強しましょう。 質問、便利なマイテクニックの発表、いろいろやっちゃってください。
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のメンバ関数を勉強してみます