OSDN Git Service

装備一覧で艦娘をレベル降順で並べる
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 4 Aug 2016 12:04:20 +0000 (21:04 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 6 Aug 2016 07:44:57 +0000 (16:44 +0900)
KancolleSniffer/ItemTreeView.cs

index 1ed5ba1..e59b2c4 100644 (file)
@@ -35,40 +35,41 @@ namespace KancolleSniffer
 \r
         private TreeNode CreateItemNodes(IEnumerable<ItemStatus> itemList)\r
         {\r
-            var grouped = from byId in\r
-                (from item in itemList\r
-                    where item.Spec.Id != -1\r
-                    orderby item.Spec.Type, item.Spec.Id, item.Alv, item.Level descending, item.Ship.Spec.Id\r
-                    group item by new {item.Spec.Id, item.Alv, item.Level})\r
-                group byId by byId.First().Spec.Type;\r
+            var grouped = from byItem in (from item in itemList\r
+                where item.Spec.Id != -1\r
+                orderby item.Spec.Type, item.Spec.Id, item.Alv, item.Level descending\r
+                group item by new {item.Spec.Id, item.Alv, item.Level}\r
+                into grp\r
+                from byShip in\r
+                    (from item in grp\r
+                        let ship = item.Ship\r
+                        orderby ship.Level descending, ship.Spec.SortNo\r
+                        group item by item.Ship.Id)\r
+                group byShip by grp.Key)\r
+                group byItem by byItem.First().First().Spec.Type;\r
+\r
             var root = new TreeNode();\r
             foreach (var byType in grouped)\r
             {\r
-                var typeName = byType.First().First().Spec.TypeName;\r
+                var typeName = byType.First().First().First().Spec.TypeName;\r
                 var typeNode = new TreeNode();\r
                 typeNode.Name = typeNode.Text = typeName;\r
                 root.Nodes.Add(typeNode);\r
                 foreach (var byItem in byType)\r
                 {\r
-                    var item = byItem.First();\r
+                    var item = byItem.First().First();\r
                     var itemNode = new TreeNode();\r
                     itemNode.Name = itemNode.Text = item.Spec.Name +\r
                                                     (item.Alv == 0 ? "" : "+" + item.Alv) +\r
                                                     (item.Level == 0 ? "" : "★" + item.Level);\r
                     typeNode.Nodes.Add(itemNode);\r
-\r
-                    var shipGroup = (from i in byItem group i.Ship by i.Ship.Id).ToArray();\r
-                    foreach (var name in\r
-                        from grp in shipGroup\r
-                        where grp.Key != -1\r
-                        let ship = grp.First()\r
-                        select (ship.Fleet != -1 ? ship.Fleet + 1 + " " : "") +\r
-                               ship.Name + "Lv" + ship.Level + "×" + grp.Count())\r
-                    {\r
-                        itemNode.Nodes.Add(name, name);\r
-                    }\r
-                    foreach (var name in (from grp in shipGroup where grp.Key == -1 select "未装備×" + grp.Count()))\r
+                    foreach (var byShip in byItem)\r
                     {\r
+                        var ship = byShip.First().Ship;\r
+                        var name = byShip.Key == -1\r
+                            ? "未装備x" + byShip.Count()\r
+                            : (ship.Fleet != -1 ? ship.Fleet + 1 + " " : "") +\r
+                              ship.Name + "Lv" + ship.Level + "×" + byShip.Count();\r
                         itemNode.Nodes.Add(name, name);\r
                     }\r
                 }\r