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

回答編集履歴

2

コードの間違いを修正

2016/12/16 07:54

投稿

tamoto
tamoto

スコア4333

answer CHANGED
@@ -19,13 +19,15 @@
19
19
  Linqを使う場合はこれで正解だと思います。
20
20
  コレクションの種類次第では、もう少し効率の良い方法があるかもしれませんが。
21
21
 
22
+ ---
23
+
22
24
  追記:
23
25
  1件だけ抽出したい場合、Aggregateを使う方法があります。
24
26
  ```csharp
25
27
  // 先にフィルタする
26
28
  var filterdCollection = originalCollection
27
29
  .Where(x => x.性別 == 男)
28
- .Where(x => 四時半 < x.時間 && < x.);
30
+ .Where(x => 四時半 < x.時間 && x. <= );
29
31
 
30
32
  // 二つの要素を比較して、{ 時間 } が遅いほうを選択
31
33
  var result = filteredCollection.Aggregate((x, y) => (x.時間 < y.時間) ? y : x);

1

Aggregateの例を追記

2016/12/16 07:54

投稿

tamoto
tamoto

スコア4333

answer CHANGED
@@ -17,4 +17,17 @@
17
17
  > {最遅5時半、最早4時半、男}で絞り込んだ後、orderbydescendingしてfirstordefaultをとってくるのがよいでしょうか?
18
18
 
19
19
  Linqを使う場合はこれで正解だと思います。
20
- コレクションの種類次第では、もう少し効率の良い方法があるかもしれませんが。
20
+ コレクションの種類次第では、もう少し効率の良い方法があるかもしれませんが。
21
+
22
+ 追記:
23
+ 1件だけ抽出したい場合、Aggregateを使う方法があります。
24
+ ```csharp
25
+ // 先にフィルタする
26
+ var filterdCollection = originalCollection
27
+ .Where(x => x.性別 == 男)
28
+ .Where(x => 四時半 < x.時間 && 五時半 < x.時間);
29
+
30
+ // 二つの要素を比較して、{ 時間 } が遅いほうを選択
31
+ var result = filteredCollection.Aggregate((x, y) => (x.時間 < y.時間) ? y : x);
32
+ ```
33
+