teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

2016/12/16 07:30

投稿

syogakusya
syogakusya

スコア67

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,7 @@
15
15
  本当にやりたいことは、{時間、性別}というデータのコレクションがあり(これが1から10000まで)、{5時、男}という入力に対して、まず4時半から5時半の間で最も遅い時間のその性別のデータをとってくるということです。
16
16
  最初にこのデータのコレクションをソートするというのはやめるとして、どのような方法で取得するのがよいでしょうか?
17
17
  {最遅5時半、最早4時半、男}で絞り込んだ後、orderbydescendingしてfirstordefaultをとってくるのがよいでしょうか?
18
+ これだとやはり1入力で1orderbyになりますが…
18
19
  そもそも1件しか必要ないのですが、ソートせずにとってきたりする方法もありますか?
19
20
  時間についてminをつかおうとおもったのですが、データのインスタンスではなく時間がとれてしまいました。
20
21
  ※順序を保持したまま〜というのはなしになったため、タイトルを変えました。

3

2016/12/16 07:30

投稿

syogakusya
syogakusya

スコア67

title CHANGED
@@ -1,1 +1,1 @@
1
- 【c#】linqで順序保持したままフィルターした
1
+ 【c#】linqで値が近いデータ一件だけ抽出したい
body CHANGED
@@ -16,4 +16,5 @@
16
16
  最初にこのデータのコレクションをソートするというのはやめるとして、どのような方法で取得するのがよいでしょうか?
17
17
  {最遅5時半、最早4時半、男}で絞り込んだ後、orderbydescendingしてfirstordefaultをとってくるのがよいでしょうか?
18
18
  そもそも1件しか必要ないのですが、ソートせずにとってきたりする方法もありますか?
19
- 時間についてminをつかおうとおもったのですが、データのインスタンスではなく時間がとれてしまいました。
19
+ 時間についてminをつかおうとおもったのですが、データのインスタンスではなく時間がとれてしまいました。
20
+ ※順序を保持したまま〜というのはなしになったため、タイトルを変えました。

2

2016/12/16 07:26

投稿

syogakusya
syogakusya

スコア67

title CHANGED
File without changes
body CHANGED
@@ -7,4 +7,13 @@
7
7
 
8
8
  ###補足
9
9
  さきにorderbyしたいのは、実際には入力というのがクライアントからの膨大な数になるからです。
10
- それでも毎回フィルタしてからorderbyしたほうがいいでしょうか?
10
+ それでも毎回フィルタしてからorderbyしたほうがいいでしょうか?
11
+
12
+ ###補足2
13
+
14
+ 試してみたところ、最初にorderbyをするだけで何秒もかかってしまうので、最初にorderbyするという選択肢はなくなりました。
15
+ 本当にやりたいことは、{時間、性別}というデータのコレクションがあり(これが1から10000まで)、{5時、男}という入力に対して、まず4時半から5時半の間で最も遅い時間のその性別のデータをとってくるということです。
16
+ 最初にこのデータのコレクションをソートするというのはやめるとして、どのような方法で取得するのがよいでしょうか?
17
+ {最遅5時半、最早4時半、男}で絞り込んだ後、orderbydescendingしてfirstordefaultをとってくるのがよいでしょうか?
18
+ そもそも1件しか必要ないのですが、ソートせずにとってきたりする方法もありますか?
19
+ 時間についてminをつかおうとおもったのですが、データのインスタンスではなく時間がとれてしまいました。

1

2016/12/16 07:24

投稿

syogakusya
syogakusya

スコア67

title CHANGED
File without changes
body CHANGED
@@ -3,4 +3,8 @@
3
3
  linqで順序を保持したままフィルターしたいです。
4
4
  例えば、リストの中にソートされていない1から10000まで数字があって、100が入力されたら50から150までを、300が入力されたら250から350までを、ソートされたコレクションとして返したいです。
5
5
  このとき、まずは1から10000までの入ったリストをorderbyでソートし、その後各入力に対してwhereでフィルタした結果を返したいのですが、whereを使うと順序が保持されないとドキュメントにありました。
6
- このような場合にどういった処理をすればよいか教えてください。
6
+ このような場合にどういった処理をすればよいか教えてください。
7
+
8
+ ###補足
9
+ さきにorderbyしたいのは、実際には入力というのがクライアントからの膨大な数になるからです。
10
+ それでも毎回フィルタしてからorderbyしたほうがいいでしょうか?