试图在 MVC 4 C# 中对饼图的图例进行排序。该图表显示了按项目编号销售的产品数量。在图例中,我想显示商品编号,然后是售出数量,然后是售出百分比,并按售出数量降序排列。
我已经正确订购了“Y”值(#已售出),但是在尝试订购“X”值时,它们最终变得混乱并且与它们正确的“Y”值不匹配。
在我看来,我应该只需要按项目编号对数据进行分组,然后按项目编号的匿名类型和项目编号计数选择数据,然后根据项目编号计数按降序排列,然后仅这次再次选择现在以正确的顺序获取项目编号的列表字符串。
上述方法工作正常的可能性很大,而问题更多在于我几乎完全不了解该DataBindXY
方法在图表中的工作原理。
代码:
var data = srv.GetTSMMetricData(Mode, Territories, selectedTerritory).GroupBy(x => x.ItemNumber).ToList();
var xValues = data.Select(x => x.Key).OrderByDescending(x => x.Count()).ToList();
mySeries.Points.DataBindXY(xValues, data.Select(x => x.Count()).OrderByDescending(x => x).ToList());
任何朝着正确方向的帮助或推动都会很棒。让我知道是否还有其他我可以发布的内容可能会丢失。
谢谢。
编辑:忘记了我试图在上述代码的早期版本中使用匿名类型..
var xValues = data.Select(x => new { Item = x.Key, Count = x.Key.Count() }).OrderByDescending(x => x.Count).ToList();
mySeries.Points.DataBindXY(xValues.Select(x => x.Item).ToList(), data.Select(x => x.Count()).OrderByDescending(x => x).ToList());
编辑 2:当前结果示例(前 5 个图例条目)..
ItemNumber - # Sold - % Sold ----- Correct ItemNumber for # Sold
-------------------------------------------------------------
8500 42 (20.79)% PRS
JOL 19 (9.41)% JOL
280 18 (8.91)% ENV
171 13 (6.44)% AMR
172 12 (5.94)% GRD
Note: 38 rows of total results
结果具有查询的所有正确 ItemNumbers 和所有 #Sold 但未将 ItemNumbers 与正确的 #Sold 匹配。我可以重新编写代码,使 ItemNumbers 和 #Sold 匹配,但只按 ItemNumber 排序,我真的想按 #Sold 排序。希望这可以更清楚地说明问题所在以及我希望看到的情况。