我无法找到使其正常工作的方法.我有一个整数列表..这些整数是我的字符串列表中的字符串计数.
我正在使用MVC图表助手,我的问题是我yValues没有正确排队xValues.
例如,我List<string>认为值:"Beginner","MOTR","Advanced".我使用此列表来订购下面的列表.
而我的数据库包含了一系列的记录,每条记录可以是一个"Beginner","MOTR"或"Advanced".所以我有一个foreach循环来收集每个级别的计数,所以它可以是动态的.但是当foreach循环执行时,它将Levels按字母顺序排列.
我也有一个名为class Rank的属性(用于局部视图目的)
这是我有的:
List<string>lstLevelsInOrder = new List<string> {"Beginner", "MOTR", "Advanced"};
List<int> emptyListIntegers = new List<int>();
List<string> lstLevels = database.testdb.Where(x => x.deleted == false).Select(x => x.Level).Distinct().ToList();
foreach(var item in lstLevels)
{
Rank rank = new Rank();
rank.level = item;
emptyListIntegers.Add(database.testdb.Where(x => x.Level == rank.level && x.deleted == false).Count());
}
var key = new Chart(width: 800, height: 800, theme: ChartTheme.Blue)
.SetXAxis()
.SetYAxis()
.AddTitle()
.AddSeries(
xValue: lstLevelsInOrder,
yValues: emptyListIntegers
);
return File(key.ToWebImage().GetBytes(), "image/jpeg");
Run Code Online (Sandbox Code Playgroud)
所以只是参数的缘故,让我们说初学者的数量是10,MOTR是20,高级是5.
当该foreach循环执行时,emptyListIntegers将填充为5,10,20(由于字母顺序)
所以,当我看到我的图表时,x轴是"初学者",y值为5,"MOTR"的y值为10,"高级",y值为20.
如何emptyListIntegers根据我的排序lstLevelsInOrder?
您必须通过string其他列表中的索引进行适当的排序:
List<string> lstLevels = database.testdb
.Where(x => ! x.deleted )
.AsEnumerable() // force Linq-To-Objects
.OrderBy(x => lstLevelsInOrder.IndexOf(x.Level))
.Select(x => x.Level)
.Distinct()
.ToList();
Run Code Online (Sandbox Code Playgroud)