\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