###やりたいこと
linqで順序を保持したままフィルターしたいです。
例えば、リストの中にソートされていない1から10000まで数字があって、100が入力されたら50から150までを、300が入力されたら250から350までを、ソートされたコレクションとして返したいです。
このとき、まずは1から10000までの入ったリストをorderbyでソートし、その後各入力に対してwhereでフィルタした結果を返したいのですが、whereを使うと順序が保持されないとドキュメントにありました。
このような場合にどういった処理をすればよいか教えてください。
###補足
さきにorderbyしたいのは、実際には入力というのがクライアントからの膨大な数になるからです。
それでも毎回フィルタしてからorderbyしたほうがいいでしょうか?
###補足2
試してみたところ、最初にorderbyをするだけで何秒もかかってしまうので、最初にorderbyするという選択肢はなくなりました。
本当にやりたいことは、{時間、性別}というデータのコレクションがあり(これが1から10000まで)、{5時、男}という入力に対して、まず4時半から5時半の間で最も遅い時間のその性別のデータをとってくるということです。
最初にこのデータのコレクションをソートするというのはやめるとして、どのような方法で取得するのがよいでしょうか?
{最遅5時半、最早4時半、男}で絞り込んだ後、orderbydescendingしてfirstordefaultをとってくるのがよいでしょうか?
これだとやはり1入力で1orderbyになりますが…
そもそも1件しか必要ないのですが、ソートせずにとってきたりする方法もありますか?
時間についてminをつかおうとおもったのですが、データのインスタンスではなく時間がとれてしまいました。
※順序を保持したまま〜というのはなしになったため、タイトルを変えました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/17 02:32
2016/12/17 03:42
2016/12/17 07:05
2016/12/17 08:31
2016/12/17 12:33