1 名前:デフォルトの名無しさん [2017/11/07(火) 21:11:25.20 ID:LeQqgpmT0.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part132 mevius.5ch.net/test/read.cgi/tech/1507543256/ ■関連スレ C#, C♯, C#相談室 Part95 mevius.5ch.net/test/read.cgi/tech/1508180530/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源https://msdn.microsoft.com/ja-jp/library/gg145045.aspx https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
434 名前:デフォルトの名無しさん [2017/11/15(水) 18:56:00.52 ID:SIgrthm30.net] >>425 変数や関数を定義するのにいちいち名前をつけるのが面倒だからよく使う 無名だらけ
435 名前:デフォルトの名無しさん [2017/11/15(水) 18:56:47.00 ID:SIgrthm30.net] 関数を定義するときには場所にも悩むしな
436 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 19:00:28.04 ID:DCxsxqPWd.net] >>418 Selectなくても大丈夫だったか hogeのGetEnumeratorが呼ばれる度にindexが増えていくのが気になるけど 戻り値はIEnumerableでもIGroupingどっちでもいいけどkeyは隠すかも もし必要になったら以下のメソッドを作って、foreachと速度比較してって採用するかどうかって感じかな 色々と参考になった public static IEnumerable<IEnumerable<string> Split<T>(IEnumerable<T> source, Func<T, bool> predicate){ var index = 0; return source.GroupBy(x => predicate(x) ? ++index : index); }
437 名前:デフォルトの名無しさん [2017/11/15(水) 19:05:07.59 ID:JCFmpBxh0.net] 俺嫌われすぎだろ アスペルガー症候群だから仕方ないのか
438 名前:デフォルトの名無しさん [2017/11/15(水) 19:06:53.89 ID:LdCnvqY76.net] スリップが****-7wKgのは全部ワシじゃ
439 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 19:46:43.95 ID:h8srGYM+0.net] linqより何でもListにしないと心休まらない兄貴の方が重症かもな
440 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 19:57:17.06 ID:rGQqr4VZr.net] >>434 ww 現場にもよくいる
441 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 20:39:25.83 ID:ILed194Q0.net] >>428 ここにいる人らにはもう必要ない
442 名前:デフォルトの名無しさん [2017/11/15(水) 20:42:42.91 ID:4QHQX7jw0.net] >>434 アカンか?
443 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:21:02.68 ID:EAeU3mIh0.net] linqだからで許されてるクソコード延々貼り付けたガイジはさっさと死ねよ
444 名前:デフォルトの名無しさん [2017/11/15(水) 21:25:59.97 ID:md1eodvT0.net] LINQが良いか悪いかは別にしてLINQを必要以上に毛嫌いする奴って頭悪いだけだろ。
445 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:34:02.77 ID:EAeU3mIh0.net] >>439 今回のは普通に書いた方が綺麗だったよね?
446 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:34:15.53 ID:O2CkROvj0.net] ここ数日の有り様は何なんだろう C#養護学校の卒業式でもあったのかね
447 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:35:20.82 ID:EAeU3mIh0.net] linq友の会スレ使えよガイジ
448 名前:デフォルトの名無しさん [2017/11/15(水) 21:36:55.30 ID:4L7ZsFBR0.net] 必要以上にってのが言いたかった。 実用性は別としてリスト操作系関数でスラスラ書ける奴にコンプでもあるのかって思っちゃう
449 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:39:23.16 ID:EAeU3mIh0.net] >>443 え? そんなの気にしたことないや プログラムなんて組めるようになったらそこでスキルレベルマックスだろ
450 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:43:12.25 ID:EAeU3mIh0.net] あとは 設計書記述スキルを上げるか 見積り書記述スキルを上げるか 議事録作成スキルを上げるか した方がナンボか実りがあるよ
451 名前:デフォルトの名無しさん [2017/11/15(水) 21:44:53.19 ID:4L7ZsFBR0.net] しかし自分の苦手な物を使える奴にはコンプを感じる
452 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:46:47.98 ID:D6YDuXrJ0.net] >>440 レスいくつも書き込むくらいならそのコード提示したらいいのに
453 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 21:48:01.68 ID:EAeU3mIh0.net] >>447 別に俺そこ
454 名前:アだわらんよ 興味ねーし お前にも [] [ここ壊れてます]
455 名前:デフォルトの名無しさん [2017/11/15(水) 22:15:03.22 ID:mH4zmpJW0.net] 興味ねーならゴミだのクソだのほざいてんじゃねーよw
456 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:17:35.92 ID:EAeU3mIh0.net] >>449 クソコードを嬉々として貼られるのは見逃せないな 荒らしと変わんねーし
457 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:20:30.39 ID:EAeU3mIh0.net] どれだけ偉そうな主張があるのかと思えば 貼ってあるのはクソコードばかり linq貼ってるやつ目障りだから死ねよ 普通に組んだ方が綺麗なコードなら持ってくんなよ だっせ
458 名前:デフォルトの名無しさん [2017/11/15(水) 22:21:20.95 ID:txwTk3zR0.net] おまえの価値基準で判断すんなw コンプ感じてるだけw
459 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:24:54.13 ID:qS39jpKw0.net] これ以上はLINQスレでやれと言おうとしたらもう落ちているのね
460 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:25:31.88 ID:EAeU3mIh0.net] >>452 いいじゃん 便所の落書きなんだし 俺が書くスペースもあんだろ 誰でもかける処理わざわざ複雑にして 悦にいってるマヌケなPGみて 安心感を得られるセラピー効果もある
461 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:26:54.12 ID:EAeU3mIh0.net] >>453 linq誰も使ってないからな
462 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:28:44.48 ID:D6YDuXrJ0.net] まあコード書けないアホは相手にしなくていいよ
463 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:35:29.64 ID:EAeU3mIh0.net] どっちかっていうとアプリを作れないアホだな まあ、コードで何か主張したいならGitHubでもやればいいのに こんな便所でしか主張できないなら クズどものlinqライフもここでしめーだろ
464 名前:デフォルトの名無しさん [2017/11/15(水) 22:39:12.32 ID:E1HTns1P0.net] ウハwwwwww 書けない奴が批判の図wwww 権利すらなしwwwwwww
465 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 22:44:23.78 ID:EAeU3mIh0.net] >>458 クソコード貼っていい気になってるの? アドバイスしてあげるけど 滅茶苦茶レベル低いよ
466 名前:デフォルトの名無しさん [2017/11/15(水) 23:03:01.93 ID:vH3D/QHI0.net] キミ流のコードおなシャス!
467 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 23:19:43.56 ID:rNYxO5wL0.net] >>436 ここは初心者スレじゃないのかw
468 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 23:22:37.65 ID:vwyVPxZJp.net] 人間初心者のスレですよ、たぶん
469 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 23:25:46.54 ID:vwyVPxZJp.net] 正確にはC#で記述された人工知能なんですけどね
470 名前:デフォルトの名無しさん [2017/11/15(水) 23:26:21.77 ID:H4muME/S0.net] >>428 どこ情報?
471 名前:デフォルトの名無しさん mailto:sage [2017/11/15(水) 23:47:19.33 ID:EAeU3mIh0.net] >>464 amazonで予約中になってる
472 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 12:14:27.14 ID:x/aWQ3sN0.net] stringは参照型だから既定値はnullということで合ってるよね?
473 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 12:22:49.67 ID:/4eW5bh4M.net] >>466 既定値はnullだけどstringはイミュータブル型
474 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 13:24:58.55 ID:lGT15xaEa.net] >>466 stringは参照型で規定値はnull
475 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:15:43.67 ID:7VJMckpW0.net] WPFじゃなくてWindowsForms内で簡単な3D描画したいんですが どういう風がいいでしょうか。 とりあえず箱を線で描くだけなんですが。 ・DrawLineみたいなので始点終点を3次元(X,Y,Z)で指定し描画 ・視点の位置(X,Y,Z)と向きを指定して表示 って風な感じが希望なんですが・・・・
476 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:25:02.34 ID:K+YFepCs0.net] それでいいじゃん
477 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:27:37.39 ID:7VJMckpW0.net] DrawLine の Point型 って X,Y しかないじゃないですか。 X,Y,Z で指定できる DrawLine がないのかと
478 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:32:16.65 ID:F5ZZYHwp0.net] 気合で座標計算
479 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:39:59.53 ID:K+YFepCs0.net] カメラ固定でいいんだろ? ZがXYのどこになるかは簡単な計算で出せる 紙に気に入った角度の3軸を書いて見ればいい
480 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 18:49:26.46 ID:rygh13wZ0.net] OpenTK
481 名前:でも使えば? [] [ここ壊れてます]
482 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 19:04:34.95 ID:JEjgvNkla.net] >>471 カメラの視線方向をZ軸、カメラから1000mm先のカメラの視線に垂直な平面上の1000mmの 線分がモニター上に1000mmで表示されるモデルを採用、3D、2Dともに同じ単位系(例えばmm) を使用する条件なら、3D空間上の点(X, Y, Z)を2D上の点(x, y)に写像するには、 (x, y) = (X/Z, Y/Z) でいいと思う。知らんけど 2DグラフィックのY軸が下向きなのを考慮するならyはもちろん-1倍する
483 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 19:32:37.14 ID:JEjgvNkla.net] 描画面の中心を原点にする変換も必要かw こっちはGraphicsの組み込みの機能でできるけど
484 名前:デフォルトの名無しさん [2017/11/16(木) 19:52:49.24 ID:o+kP3k0v0.net] 透視投影 satoh.cs.uec.ac.jp/ja/lecture/ComputerGraphics/3.pdf
485 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 19:57:23.76 ID:K+YFepCs0.net] そんな面倒なことしなくても カメラ固定ならXYに足すだけでいいじゃん Zが1ならXYに0.5ずつ足すみたいのでいいよ Zが2ならXYに1ずつ足す Zが3ならXYに1.5ずつ足す みたいな
486 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 21:38:46.30 ID:ac8ZDyBE0.net] >>469 URLが何故か張れないんだが C#3D立方体ワイヤーフレーム (第1回) for VS2013 Express でググって見つかるところが参考になる ライブラリを期待しているのならC++で探すしかないだろうな DLLになっていればC#からでも使えるから
487 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 22:56:01.22 ID:851mScQ5a.net] いくらなんでもopenGLライブラリはwinforms用ぐらいあると思う windows forms openglでググれ
488 名前:デフォルトの名無しさん [2017/11/16(木) 23:02:09.93 ID:o+kP3k0v0.net] >>474 でもうでてる
489 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 23:17:24.79 ID:Tv1Vr9CT0.net] 時間, 名前, テスト回数 2017/1/1, A氏, 3 2017/1/1, A氏, 4 2017/1/1, B氏, 1 2017/1/1, B氏, 2 2017/2/1, A氏, 1 2017/2/1, A氏, 2 2017/2/1, B氏, 1 2017/2/1, B氏, 2 2017/3/1, A氏, 1 2017/3/1, A氏, 2 2017/3/1, A氏, 3 ↑のようなデータがある場合 ↓のように名前ごとに最新の時間のデータを取得したい。 2017/3/1, A氏, 1 2017/3/1, A氏, 2 2017/3/1, A氏, 3 2017/2/1, B氏, 1 2017/2/1, B氏, 2
490 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 23:18:08.01 ID:Tv1Vr9CT0.net] >>482 ↓のような感じで取れるとは思いますが 実際のデータでは時間も名前も複数あるのでLINQで一発で取れる書き方はないでしょうか? public class Test { public DateTime 時間 { get; set; } public string 名前 { get; set; } public int テスト回数 { get; set; } } List<Test> ListTest = new ListTest (); var List1 = ListTest.Where(x=>x.名前 == "A氏" & x.時間 = 2017/3/1).ToList(); var List2 = ListTest.Where(x=>x.名前 == "B氏" & x.時間 = 2017/2/1).ToList(); List3.add(List1); List3.add(List2);
491 名前:デフォルトの名無しさん [2017/11/16(木) 23:18:26.88 ID:o+kP3k0v0.net] LINQの出番再び
492 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 23:19:34.43 ID:eJZERDUZ0.net] 友の会スレに行け
493 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 23:28:56.32 ID:Tv1Vr9CT0.net] そんなこといわずに優しいレスくれよ 友の会ってどこなの?
494 名前:デフォルトの名無しさん [2017/11/16(木) 23:37:44.24 ID:o+kP3k0v0.net] list.GroupBy(item=>item.名前).Select(group=>group.Max(item=>item.日時.Ticks)).ToList<Test>()
495 名前:デフォルトの名無しさん [2017/11/16(木) 23:44:12.00 ID:o+kP3k0v0.net] 今試したらエラー吐いたけど参考にしてくれ
496 名前:デフォルトの名無しさん mailto:sage [2017/11/16(木) 23:44:38.82 ID:Tv1Vr9CT0.net] >>487 レスありがとうございます。 Ticks使ったことないので参考になりました。 ありがとうございます。
497 名前:デフォルトの名無しさん [2017/11/17(金) 00:03:01.06 ID:LOAPaCxV0.net] ListTest.GroupBy(item => item.名前).Select(group => group.Aggregate((max, item) => item.時間 > max.時間 ? item : max)).ToList()
498 名前:デフォルトの名無しさん [2017/11/17(金) 00:16:27.21 ID:ZIvR54fI0.net] DateTimeオブジェクトはそれ自体に大小関係演算子使えるしな
499 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 00:34:17.30 ID:xoZUoffUa.net] どれも微妙に仕様から外れてるような…
500 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 00:40:57.63 ID:45Grbd2f0.net] 並びの下の方が同じ日付でも最新なの? まあ、そういうデータよくあるけど
501 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 00:54:10.94 ID:E5GExksf0.net] SQLだとドヤ顔でExistsしてるブログがたくさん出るやつだな
502 名前:デフォルトの名無しさん [2017/11/17(金) 00:57:10.96 ID:ZBvifIa80.net] 下のやつを最新にしたいなら>=にすればいいのかな 順番通りの保障ないかもしれないけど
503 名前:デフォルトの名無しさん [2017/11/17(金) 01:02:10.05 ID:ZBvifIa80.net] ienumerbleだからだめか 最初の段階でインデックスとペアにするとか
504 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 01:13:33.00 ID:xoZUoffUa.net] 多分個人の最終日のすべてデータが欲しいんだよね
505 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 01:21:22.13 ID:xoZUoffUa.net] う〜んできたけど汚い
506 名前:デフォルトの名無しさん [2017/11/17(金) 02:55:06.18 ID:ZBvifIa80.net] これだけで各々の最新のデータが取れるはず。 ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList() ・GroupBy Elements in a grouping are yielded in the order that the elements that produced them appear in source. https://msdn.microsoft.com/ja-jp/library/bb534304(v=vs.110).aspx ・OrderBy キーに従って昇順のシーケンスの要素を並べ替えます。 このメソッドは、安定した並べ替えを実行します。つまり、2 つの要素のキーが等しい場合は、要素の順序が保持されます。 https://msdn.microsoft.com/ja-jp/library/bb534966(v=vs.110).aspx 元データの並び順で下にあるほうのが優先されてるのをはっきりとわかるように書きたかったらかなり長いけどこうかな?w ListTest.Select((item, index) => { Item = item, Index = index } ).GroupBy(pair => pair.Item.名前).Select(group => group.GroupBy(pair => pair.Item.時間).OrderBy(innerGroup => innerGroup.Key).Last().OrderBy(pair => pair.Index).Last().Item)
507 名前:デフォルトの名無しさん [2017/11/17(金) 02:56:22.67 ID:ZBvifIa80.net] .ToList() w
508 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 09:51:19.99 ID:45Grbd2f0.net] これ、仕事で使われたらキレるな
509 名前:デフォルトの名無しさん [2017/11/17(金) 10:01:35.59 ID:yfGcWiWk0.net] 落ち着けよ、おっさん。
510 名前:デフォルトの名無しさん [2017/11/17(金) 11:41:22.51 ID:vZ4OY4a56.net] LINQ使わなかったらこうか? int indexOfSame名前(Test item, List<Test> list) { for(var i=0;list.Count;i++) if(list[i].名前==item.名前){ foundIndex=i; return i; } } return -1; } List<Test> extractLatestData(List<Test> list) { var result=new List<Test>(); foreach(var item in list){ var foundIndex=indexOfSame名前(item, result); if(foundIndex>=0){ if(item.時間>=result[foundIndex].時間){ result[foundIndex]=item; } }else{ result.Add(item); } } return result; } var result= extractLatestData(ListTest); LINQ使えばこう? var result=ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList();
511 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 11:58:47.46 ID:XIkoXTHK0.net] 横に長くて拒否反応出るのも解らないでは無いんだが 読む時は愚直に左から読んでいくだけだし、PowerShell使ってると日常茶飯事だしな……
512 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 12:03:36.39 ID:/4Y2zvAi0.net] 普通は、改行しながら書く
513 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 12:08:02.02 ID:qxZxmWbCM.net] >>504 じゃあ、全コード一行でいいじゃん 左から読んでいくだけだろ?
514 名前:デフォルトの名無しさん [2017/11/17(金) 12:11:30.21 ID:vZ4OY4a56.net] foreach~~ result.Add(latestDataOf(リスト, 名前)) とかのほうがいい?
515 名前:デフォルトの名無しさん [2017/11/17(金) 12:14:53.31 ID:vZ4OY4a56.net] これだとおかしいか foreachであらかじめリストから抽出しておいた名前の種類の一覧とかを与えないとあれか
516 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 12:23:06.18 ID:uCPaYCi4d.net] 最新取る頻度が高いなら最新テーブルと履歴テーブルを分けてほしい
517 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 13:11:41.07 ID:QYCCbo0/0.net] 推敲してから書き込めば一度で済むのに。。。
518 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 13:38:17.44 ID:45Grbd2f0.net] >>503 コメントがないじゃん やり直し
519 名前:デフォルトの名無しさん [2017/11/17(金) 14:48:58.50 ID:y/lDgZqq6.net] みんなって推敲してるの? 真面目だな 俺もこれからはそうするかもしれん
520 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 15:16:56.52 ID:Km51pzYd0.net] 真面目に考えるとデータベースに更新分Insertしてからあらかじめ作ってあるビューをSelectするだけ GroupBYや集計はDBでやった方が楽だしこっちでは表示件数や順序くらいしかいじらない データベースといってもローカル鯖や組み込みもある、適材適所
521 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 17:32:51.55 ID:VYtKuwzgM.net] インサート前にソートとかボトルネックだよね
522 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 18:05:42.37 ID:g1yHwUG3M.net] sources .GroupBy(s => new { 名前, テスト回数 }) .Select(g => new { g.Key.名前, g.Key.テスト回数, 時間 = g.Max(s => s.時間) }); 悩むところねえなぁ
523 名前:デフォルトの名無しさん [2017/11/17(金) 18:29:28.97 ID:ZBvifIa80.net] 汎用性低いな。
524 名前:デフォルトの名無しさん [2017/11/17(金) 18:32:42.23 ID:ZBvifIa80.net] ListTest.GroupBy(item => item.名前).Select(group => group.OrderBy(item => item.時間).Last()).ToList() ワシのが1番じゃろ。
525 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 18:42:45.87 ID:1r1wVT3lM.net] よくみたら仕様ちゃうやん自分… src.GroupBy(s => s.名前) .SelectMany(g => g.Where(t => t.時間 == g.Max(u => u.時間)); これが王道の正解な
526 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 18:50:16.49 ID:1r1wVT3lM.net] こっちのが速いかな sec.ToLookup(s => s.名前) .Select(g => new { g, m = g.Max(t => t.時間) .SelectMany(p => p.g.Where(u => u.時間 == p.m);
527 名前:デフォルトの名無しさん [2017/11/17(金) 18:50:30.24 ID:ZBvifIa80.net] そういやラムダ式の中の命名は超シンプルでいいんだったな。 >>518 最大値を探すためにループ、その値を持ち主をまた探すためにループってなんかキモくね?それが王道なのか。
528 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 19:36:01.87 ID:15/bjs8Fd.net] >>482 まず時間と名前でグループ化 時間, 名前, テスト回数 2017/1/1, A氏, 3,4 2017/1/1, B氏, 1,2 2017/2/1, A氏, 1,2 2017/2/1, B氏, 1,2 2017/3/1, A氏, 1,2,3 あとは日付けでソートして名前でDistinctするかな
529 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 19:40:08.46 ID:hFmoO+PyM.net] >>520 ループ? SelectManyはSQLで言えば結合みたいなもの LinqのJoinだとこんな感じかな src.GroupBy(s => s.名前) .Join(src, g => new { 名前 = g.Key, 時間 = g.Max(t => t.時間) }, u => new { u.名前, u.時間 }, (g, u) => u); SelectManyの方がわかりやすいな
530 名前:デフォルトの名無しさん [2017/11/17(金) 19:46:57.67 ID:ZBvifIa80.net] Maxを探すためにループ、その持ち主また探すためにWhereでループ
531 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 20:26:05.65 ID:/4Y2zvAi0.net] max ← 持ち主 こういう方向のリンクなら、max を探してから、持ち主も探さなきゃいけないけど、 逆方向のリンクなら、すぐ
532 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 20:34:11.03 ID:45Grbd2f0.net] 名前、日付で降順ソートして名前ごとの最新取るだけでなげーな
533 名前:デフォルトの名無しさん mailto:sage [2017/11/17(金) 20:40:49.52 ID:2lBbqhr3M.net] >>525 それ結局最後まで舐めないと全ての名前が分からないから何の意味もないぞ
534 名前:デフォルトの名無しさん [2017/11/17(金) 21:20:38.75 ID:Xkp76caL0.net] LINQって実は裏側でforeachで回してるってホント?