回答編集履歴

2

見直しキャンペーン中

2023/08/15 15:26

投稿

TN8001
TN8001

スコア9350

test CHANGED
@@ -1,5 +1,5 @@
1
1
  大げさすぎる気がしますが、本体部分はすっきりしていますよね?w
2
- Linqを駆使すれば拡張メソッド部分なしで何とかなるとは思いますが、私は苦手なのでわかりません^^;
2
+ LINQを駆使すれば拡張メソッド部分なしで何とかなるとは思いますが、私は苦手なのでわかりません^^;
3
3
 
4
4
  ```cs
5
5
  using System;

1

見直しキャンペーン中

2023/07/17 13:37

投稿

TN8001
TN8001

スコア9350

test CHANGED
@@ -1,101 +1,51 @@
1
1
  大げさすぎる気がしますが、本体部分はすっきりしていますよね?w
2
-
3
2
  Linqを駆使すれば拡張メソッド部分なしで何とかなるとは思いますが、私は苦手なのでわかりません^^;
4
3
 
5
-
6
-
7
- ```C#
4
+ ```cs
8
-
9
5
  using System;
10
-
11
6
  using System.Collections.Generic;
12
-
13
7
  using System.Linq;
14
-
15
8
  using System.Xml.Linq;
16
9
 
17
-
18
-
19
10
  namespace Questions233905
20
-
21
11
  {
22
-
23
12
  class Program
24
-
25
13
  {
26
-
27
14
  static void Main()
28
-
29
15
  {
30
-
31
16
  var xdoc = XDocument.Load(@"ballsports.xml");
32
-
33
17
  var MaxMembers = xdoc.Root.Elements().MaxBy(x => int.Parse(x.Element("teammembers").Value));
34
-
35
18
  MaxMembers.ToList().ForEach(x => Console.WriteLine("{0} {1}", x.Element("name").Value, x.Element("teammembers").Value));
36
-
37
19
  }
38
-
39
20
  }
40
21
 
41
-
42
-
43
22
  // https://qiita.com/Zuishin/items/95e171eccc128bdd6429
44
-
45
23
  static class IEnumerableExtensions
46
-
47
24
  {
48
-
49
25
  //public static IEnumerable<T> MinBy<T, U>(this IEnumerable<T> source, Func<T, U> selector)
50
-
51
26
  // => SelectBy(source, selector, (a, b) => Comparer<U>.Default.Compare(a, b) < 0);
52
-
53
27
  public static IEnumerable<T> MaxBy<T, U>(this IEnumerable<T> source, Func<T, U> selector)
54
-
55
28
  => SelectBy(source, selector, (a, b) => Comparer<U>.Default.Compare(a, b) > 0);
56
-
57
29
  private static IEnumerable<T> SelectBy<T, U>(IEnumerable<T> source, Func<T, U> selector, Func<U, U, bool> comparer)
58
-
59
30
  {
60
-
61
31
  var list = new LinkedList<T>();
62
-
63
32
  var prevKey = default(U);
64
-
65
33
  foreach(var item in source)
66
-
67
34
  {
68
-
69
35
  var key = selector(item);
70
-
71
36
  if(list.Count == 0 || comparer(key, prevKey))
72
-
73
37
  {
74
-
75
38
  list.Clear();
76
-
77
39
  list.AddLast(item);
78
-
79
40
  prevKey = key;
80
-
81
41
  }
82
-
83
42
  else if(Comparer<U>.Default.Compare(key, prevKey) == 0)
84
-
85
43
  {
86
-
87
44
  list.AddLast(item);
88
-
89
45
  }
90
-
91
46
  }
92
-
93
47
  return list;
94
-
95
48
  }
96
-
97
49
  }
98
-
99
50
  }
100
-
101
51
  ```