回答編集履歴

11

文章構成の訂正その2

2015/09/08 02:38

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -18,7 +18,11 @@
18
18
 
19
19
 
20
20
 
21
- Dictionary型の要素自体を取り出したい場合は以下のようにすれば良いでしょう
21
+ Dictionary型の要素自体を取り出したい場合は少し変則的なります。
22
+
23
+ NUMが最大値の要素を取得するには`OrderByDescending`メソッドを使います。
24
+
25
+ シーケンスをソートして先頭の要素を取ってくることで最大値を含む要素を検索します。
22
26
 
23
27
  ```C#
24
28
 
@@ -59,12 +63,6 @@
59
63
  Console.WriteLine(value.No2); // => EEE
60
64
 
61
65
  ```
62
-
63
-
64
-
65
- NUMが最大値の要素を取得するには`OrderByDescending`メソッドを使います。
66
-
67
- シーケンスをソートして先頭の要素を取ってくることで最大値を含む要素を検索します。
68
66
 
69
67
 
70
68
 

10

文章校正の訂正その2

2015/09/08 02:38

投稿

haru666
haru666

スコア1591

test CHANGED
File without changes

9

文章校正の訂正

2015/09/08 02:37

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -3,6 +3,12 @@
3
3
 
4
4
 
5
5
  値のみを取得する場合にはozwkさんが前述されているように`Max`メソッドを使用しましょう。
6
+
7
+ まず、`Where`メソッドでNo1がAAAの要素に絞り込みます。
8
+
9
+ 次に、`Max`メソッドで何の値の最大値を取得するかをデリゲートで指定します。
10
+
11
+
6
12
 
7
13
  ```C#
8
14
 
@@ -56,9 +62,7 @@
56
62
 
57
63
 
58
64
 
59
- まず、`Where`メソッドでNo1がAAAの要素に絞り込みます。
60
-
61
- NUMが最大値の要素を取得するには`OrderByDescending`メソッドを使えばよでしょう
65
+ NUMが最大値の要素を取得するには`OrderByDescending`メソッドを使います
62
66
 
63
67
  シーケンスをソートして先頭の要素を取ってくることで最大値を含む要素を検索します。
64
68
 

8

表現を訂正

2015/09/08 02:36

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- だけで十分であればozwkさんが前述されているように`Max`メソッドを使用しましょう。
5
+ のみを取得する場合にはozwkさんが前述されているように`Max`メソッドを使用しましょう。
6
6
 
7
7
  ```C#
8
8
 

7

ozwkさんの説明に対する追記

2015/09/08 02:34

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -3,6 +3,14 @@
3
3
 
4
4
 
5
5
  値だけで十分であればozwkさんが前述されているように`Max`メソッドを使用しましょう。
6
+
7
+ ```C#
8
+
9
+ int max = z.Where(item => item["NO1"] == "AAA").Max(item => int.Parse(item["NUM"]));
10
+
11
+ ```
12
+
13
+
6
14
 
7
15
  Dictionary型の要素自体を取り出したい場合は以下のようにすれば良いでしょう。
8
16
 

6

訂正

2015/09/08 02:33

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 値だけで十分であればozwkさんが前述されているように`Max`メソッドを使用するだけで十分です
5
+ 値だけで十分であればozwkさんが前述されているように`Max`メソッドを使用しましょう
6
6
 
7
7
  Dictionary型の要素自体を取り出したい場合は以下のようにすれば良いでしょう。
8
8
 

5

追記

2015/09/08 02:29

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
+ 値だけで十分であればozwkさんが前述されているように`Max`メソッドを使用するだけで十分です。
6
+
5
- No1値毎に1回ずつLinq実行する場合は以下のようにすれば良いでしょう。
7
+ Dictionary型要素自体取り出したい場合は以下のようにすれば良いでしょう。
6
8
 
7
9
  ```C#
8
10
 

4

Dictionary型にあわせてコメントを追加

2015/09/08 02:29

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -27,6 +27,16 @@
27
27
  .OrderByDescending(x => x.NUM)
28
28
 
29
29
  .FirstOrDefault();
30
+
31
+
32
+
33
+ // Dictionary型の場合以下のようになります
34
+
35
+ // values.Where(x => x["NO1"] == "AAA")
36
+
37
+ // .OrderByDescending(x => int.Parse(x["NUM"]))
38
+
39
+ // .FirstOrDefault();
30
40
 
31
41
 
32
42
 

3

追記の改善

2015/09/08 02:22

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -1,4 +1,4 @@
1
- ※まず第一に、List<Dictionary<string, T>>の形式を止めた方が良いとは思いますが
1
+ ※まず第一に、List<Dictionary<string, string>>の形式を止めた方が良いとは思いますが…時間があればクラスにしましょう
2
2
 
3
3
 
4
4
 

2

最初の1文を追記

2015/09/08 02:19

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -1,3 +1,7 @@
1
+ ※まず第一に、List<Dictionary<string, T>>の形式を止めた方が良いとは思いますが
2
+
3
+
4
+
1
5
  No1の値毎に1回ずつLinqを実行する場合は以下のようにすれば良いでしょう。
2
6
 
3
7
  ```C#

1

語彙の変更

2015/09/08 02:18

投稿

haru666
haru666

スコア1591

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- // No1を"AAA"で絞り込み、NUMを降順に並べ替えてからその先頭の1つを得る
19
+ // No1を"AAA"で絞り込み、NUMを降順に並べ替えてからその先頭の要素1つを得る
20
20
 
21
21
  var value = values.Where(x => x.No1 == "AAA")
22
22
 
@@ -32,15 +32,15 @@
32
32
 
33
33
 
34
34
 
35
- まず、`Where`メソッドでNo1がAAAの値だけのものに絞り込みます。
35
+ まず、`Where`メソッドでNo1がAAAの要素に絞り込みます。
36
36
 
37
- NUMが最大値のを取得するには`OrderByDescending`メソッドを使えばよいでしょう。
37
+ NUMが最大値の要素を取得するには`OrderByDescending`メソッドを使えばよいでしょう。
38
38
 
39
- をソートして先頭のを取ってくることで最大値を含むを検索します。
39
+ シーケンスをソートして先頭の要素を取ってくることで最大値を含む要素を検索します。
40
40
 
41
41
 
42
42
 
43
- 上記のようにNo1の値1つに対してではなく、最大値を含むを値毎に取得したい場合には`GroupBy`メソッドを使うと良いでしょう。
43
+ 最大値を含む要素No1の値毎に取得したい場合には`GroupBy`メソッドを使うと良いでしょう。
44
44
 
45
45
  ```C#
46
46
 
@@ -72,11 +72,11 @@
72
72
 
73
73
  // 2. シーケンスをNUMの値で降順に並べ替えます
74
74
 
75
- var result = values.GroupBy(value => value.No1)
75
+ var result = values.GroupBy(x => x.No1)
76
76
 
77
- .Select(grouped =>
77
+ .Select(g =>
78
78
 
79
- grouped.OrderByDescending(value => value.NUM)
79
+ g.OrderByDescending(x => x.NUM)
80
80
 
81
81
  .First());
82
82
 
@@ -106,9 +106,11 @@
106
106
 
107
107
  ---
108
108
 
109
+
110
+
109
111
  蛇足ですが、パフォーマンスを考えるとDBのSELECT文を変える方が良いこともあります。
110
112
 
111
-
113
+ より良いものを選択してください。
112
114
 
113
115
  ```SQL
114
116